L'annidamento è inevitabile, tuttavia nella maggior parte dei casi il ritorno anticipato è un'opzione più praticabile.
Considera il seguente frammento:
MyRoutine(argument)
{
if (0 == argument) {
SubRoutine(argument);
} else if (1 == argument) {
SubRoutineForSomething(argument);
} else {
SubRoutineForMe(argument);
}
return this;
}
Mi trovo costantemente a refactoring per
MyRoutine(argument)
{
if (0 == argument) {
SubRoutine(argument);
return this;
}
if (1 == argument) {
SubRoutineForSomething(argument);
return 1;
}
SubRoutineForMe(argument);
return this;
}
L'unica eccezione è mantenere le cose asciutte, quindi invece di
MyRoutine(argument)
{
if (0 == argument) {
SubRoutine(argument);
AnotherAction();
return this;
}
if (1 == argument) {
SubRoutineForSomething(argument);
AnotherAction();
return 1;
}
SubRoutineForMe(argument);
AnotherAction();
return this;
}
Preferirei usare
MyRoutine(argument)
{
if (0 == argument) {
SubRoutine(argument);
} else if (1 == argument) {
SubRoutineForSomething(argument);
} else {
SubRoutineForMe(argument);
}
AnotherAction();
return this;
}
Ci sono grossi svantaggi per uscire presto? Sto passando dal lavoro lato server allo sviluppo del gioco (Javascript e linguaggio simile a C). Ci sono delle trappole che dovrei fare attenzione ai benefici che mi mancano (previsione dei rami)?
Spero che questo sia diverso da questa domanda .