C# Iniciante – Short Circuiting
Uma técnica interessante que o C# utiliza é o short circuiting (curto circuito), que significa que se parte de uma declaração é todo verdadeiro ou falso, não há nenhuma necessidade de processar o resto da declaração.
Vamos à prática para entender melhor.
Normalmente a utilização dos operadores lógicos são da seguinte forma:
int valor1 = 60;
int valor2 = 10;
int valor3 = 35;
if ((valor1 > valor2) | (valor2 < valor3))
Response.Write("Verdadeiro");
else
Response.Write("False");
if ((valor2 > valor3) & (valor1 > valor2))
Response.Write("Verdadeiro");
else
Response.Write("False");
No caso acima, tanto na primeira verificação ((valor1 > valor2) | (valor2 < valor3)) quanto na segunda verificação ((valor2 > valor3) & (valor1 > valor2)) as duas expressões são analisadas, independente se a primeira seja verdadeira ou falsa.
Agora analise o código abaixo, onde utilizamos a técnica short circuiting:
int valor1 = 60;
int valor2 = 10;
int valor3 = 35;
if ((valor1 > valor2) || (valor2 < valor3))
Response.Write("Verdadeiro");
else
Response.Write("False");
if ((valor2 > valor3) && (valor1 > valor2))
Response.Write("Verdadeiro");
else
Response.Write("False");
Primeira verificação: Neste caso, como o valor1 é maior que o valor2 e o operador lógico condicional utilizado é o OR (||), sem mesmo verificar a segunda instrução o resultado desta verificação é verdadeiro.
Segunda verificação: Neste caso, como o valor2 é menor que o valor3 e o operador lógico condicional utilizado é o AND (&&), sem mesmo verificar a segunda instrução o resultado desta verificação é falso.
Projetando bem as expressões que usam os operadores lógicos condicionais, você poderá aumentar o desempenho do seu código evitando trabalho desnecessário. Utilize a técnica short circuiting, coloque expressões booleanas simples que possam ser avaliadas facilmente no lado esquerdo de um operador lógico condicional e coloque as expressões mais complexas no lado direito. Com isso, em muitos casos as expressões mais complexas não são avaliadas por não ser necessária.
Para comprovar o que digo, crie um método aplicando a verificação convencional e outro aplicando a técnica short circuiting, depois crei um projeto/método de teste e analise o Code Coverage, veja quais expressões são analisadas nos dois casos.