Perché dovrei usare la logica positiva in un blocco if?
-
27-10-2019 - |
Domanda
Non capisco perché sia una buona pratica utilizzare la logica positiva in un blocco if
http://msdn.microsoft.com/en-US/library/aa629483.aspx
Preferito:
if (true)
{
...
}
else
{
...
}
Perché è consigliabile avere una logica positiva in un blocco if?
Soluzione
Suo generalmente considerato come più facile da capire.
if (!ICanDoThis)
{
// don't do it
}
else
{
// do it
}
contro
if (ICanDoThis)
{
// do it
}
else
{
// don't do it
}
La tua logica potrebbe esserti chiara oggi, ma pensa allo sviluppatore che si imbatterà in essa tra un paio d'anni.
Ma come ogni altra cosa, questa è solo una linea guida.Nello specifico, utilizzo qualcosa come la "logica negativa" con il controllo degli errori:
if (!myParametersAreValid)
{
// fail out
}
DoWorkWith(myParameters)
Evito una cascata di condizionali che altrimenti la "logica positiva" richiederebbe.
Altri suggerimenti
A volte utilizzo una logica semi-positiva come questa.Penso che sia una logica tecnicamente positiva perché non utilizza gli operatori "not".A volte trovo difficile utilizzare sempre la logica positiva perché finisce per rendere il mio codice non pulito:
if (ICanDoThis == false)
{
// I can't do this
}
else
{
// I can do this
}
Ho sempre visto le persone testare prima il risultato più probabile.Ad esempio, le finestre di dialogo modali normalmente hanno un pulsante predefinito (evidenziato). Lo vedi perché è più probabile o più comune che venga utilizzato. Quindi, se ti aspetti vero, vedresti
if (true) {
} else {
}