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?

È stato utile?

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 {

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top