Início > C#, Programação, Testes > C# Iniciante – Short Circuiting

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.

  1. Nenhum comentário ainda.
  1. Nenhum trackbacks ainda.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.