Abbiamo avuto un disaccordo in una revisione del codice.
Quello che avevo scritto:
if(unimportantThing().isGood && previouslyCalculatedIndex != -1)
{
//Stuff
}
if(otherThing().isBad && previouslyCalculatedIndex != -1)
{
//Otherstuff
}
if(yetAnotherThing().isBad)
{
//Stuffystuff
}
Il revisore ha chiamato quel brutto codice. Questo è quello che si aspettava:
if( previouslyCalculatedIndex != -1)
{
if(unimportantThing().isGood)
{
//Stuff
}
if(otherThing().isBad)
{
//Otherstuff
}
}
if(yetAnotherThing().isBad)
{
//Stuffystuff
}
Direi che è una differenza piuttosto semplice e che la complessità dell'aggiunta di un altro livello di ramificazione è ugualmente cattiva come uno o due logici.
Ma solo per controllare me stesso, questo è davvero un grave peccato di codifica su cui vorresti prendere una posizione ferma? sempre estrai i casi comuni nelle tue istruzioni if e fai il branch su di essi separatamente, o aggiungi logici ad un paio di istruzioni if?