¿Por qué debería usar una lógica positiva en un bloque if?
-
27-10-2019 - |
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?
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 {
}