Yoda Conditions com C#

Standard

Acredito que a maioria dos “developers” escreveria uma simples condição como demonstrado abaixo:

int varInt = 1;
if (varInt == 2){
//...
}

bool varBool = false;
if (varBool == true){
//...
}

O que há de errado? Na verdade não existe erro algum nos snippets acima, porém, considere os seguintes erros na digitação do código:

int varInt = 1;
if (varInt = 2){
//...
}

bool varBool = false;
if (varBool = true){
//...
}


Ambos estão errados, porém, no primeiro caso, o seguinte erro de compilação é exibido : Cannot implicitly convert type ‘int’ to ‘bool’. Entretanto no segundo caso apenas um Warning é gerado e a compilação é executada com sucesso: Assignment in conditional expression is always constant; did you mean to use == instead of = ?

Como melhorar isso? Utilizando condições Yoda! Veja:

int varInt = 1;
if (2 == varInt){
//...
}

bool varBool = false;
if (false == varBool){
//...
}

Desta forma os erros são reduzidos, uma vez que o erro de codifição para ambos os casos seria o mesmo, ou seja, não seria possível efetuar atribuições a literais. Veja:

int varInt = 1;
if (2 = varInt){ //The left-hand side of an assignment must be a variable, property or indexer
//...
}

bool varBool = false;
if (false = varBool){ //The left-hand side of an assignment must be a variable, property or indexer
//...
}

Bom, era isso! Wink

 

Leave a Reply

Your email address will not be published. Required fields are marked *