A volte inciampo in un codice simile al seguente esempio (ciò che questa funzione fa esattamente non rientra nell'ambito di questa domanda):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
Come si può vedere, if, else ife le elsedichiarazioni sono utilizzati in combinazione con la returndichiarazione. Questo sembra abbastanza intuitivo per un osservatore occasionale, ma penso che sarebbe più elegante (dal punto di vista di uno sviluppatore di software) eliminare i else-s e semplificare il codice in questo modo:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
Ciò ha senso, poiché tutto ciò che segue returnun'istruzione (nello stesso ambito) non verrà mai eseguito, rendendo il codice sopra semanticamente uguale al primo esempio.
Quale delle opzioni precedenti si adatta meglio alle buone pratiche di codifica? Ci sono degli svantaggi in entrambi i metodi per quanto riguarda la leggibilità del codice?
Modifica: è stato formulato un suggerimento duplicato con questa domanda fornita come riferimento. Credo che la mia domanda tocchi un argomento diverso, poiché non sto chiedendo di evitare dichiarazioni duplicate come presentato nell'altra domanda. Entrambe le domande cercano di ridurre le ripetizioni, sebbene in modi leggermente diversi.
-1è un numero, falseè un valore booleano e valuenon è specificato qui, quindi potrebbe essere qualsiasi tipo di oggetto.
valuerealtà fosse un numero intero. Se può essere qualsiasi cosa, allora è anche peggio.
elseproblema è minore, il problema maggiore è che stai ovviamente restituendo due tipi di dati da una singola funzione, il che rende imprevedibile l'API della funzione.