Pregunta

No entiendo por qué es una mejor práctica usar lógica positiva en un bloque if

http://msdn.microsoft.com/en-us/library/aa629483.aspx

Privilegiado:

if (true) 
{ 
   ... 
} 
else 
{ 
   ... 
} 

¿Por qué es una mejor práctica tener una lógica positiva en un bloque if?

¿Fue útil?

Solución

Es Generalmente considerado como más fácil de entender.

if (!ICanDoThis)
{
    // don't do it
}
else
{
    // do it
}

vs.

if (ICanDoThis)
{
    // do it
}
else
{
    // don't do it
}    

Su lógica puede ser clara para usted hoy, pero piense en el desarrollador que lo pasa dentro de él dentro de un par de años.

Pero como todo lo demás, esto es solo una guía. Específicamente, uso algo como "lógica negativa" con verificación de errores:

if (!myParametersAreValid)
{
    // fail out
}

DoWorkWith(myParameters)

Evito una cascada de condicionales que de otro modo requeriría la "lógica positiva".

Otros consejos

A veces hago una lógica semi-positiva como esta. Creo que es una lógica técnicamente positiva porque no usa operadores "no". A veces me resulta difícil usar siempre una lógica positiva porque termina haciendo que mi código fuera de limpieza:

if (ICanDoThis == false)
{
  // I can't do this
}
else
{
  // I can do this
}

Siempre he visto a las personas probar primero el resultado más probable. Por ejemplo, los diálogos modales normalmente tienen un botón predeterminado (resaltado), lo ve porque es más probable o más común que esto se usará. Por lo tanto, si espera cierto, vería

if (true) {

} else {

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top