Nel nostro progetto ci sono strutture ifali profonde e lunghe che possono essere significativamente accorciate da un semplice riarrangiamento. Per me anche la versione più breve sarebbe più facile da capire.
Ad esempio, questo:
if(a) {
if(b) {
doSomething1;
}
else {
doSomething2;
}
}
else {
if(b) {
doSomething1;
}
else {
if(c) {
doSomething3;
}
else {
doSomething2;
}
}
}
potrebbe essere refactored a:
if(b) {
doSomething1;
}
else {
if(!a && c) {
doSomething3;
}
else {
doSomething2;
}
}
Vale la pena fare questo tipo di riarrangiamenti?
Esiste un nome per questo tipo di "riorganizzazione" se altre strutture sono più brevi?
Sto cercando argomenti per convincere i college che vale la pena di fare lo sforzo di fare i cambiamenti. O - ovviamente - argomenti contro di esso, per convincermi che non vale la pena farlo.
Penso di poter essere d'accordo con Ewan sul fatto che probabilmente non vale la pena cambiare il codice di lavoro per questo.
Tuttavia, se si tratta di un nuovo codice o stiamo eseguendo un refactoring principale (e garantito un nuovo test di ogni percorso di esecuzione), lo accorcerei come sopra, OPPURE, specialmente se non c'è modo di significativamente accorcia la struttura - vai alla soluzione "self documenting logic table" indicata da David:
if ( a && b && c) doSomething1;
else if( a && b && !c) doSomething1;
else if( a && !b && c) doSomething2;
else if( a && !b && !c) doSomething2;
else if(!a && b && c) doSomething1;
else if(!a && b && !c) doSomething1;
else if(!a && !b && c) doSomething3;
else if(!a && !b && !c) doSomething2;
Oltre ad essere auto-documentato, penso che le modifiche successive saranno più facili da seguire anche nei log di sistema di revisione del codice.