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 if
e le else
dichiarazioni sono utilizzati in combinazione con la return
dichiarazione. 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 return
un'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 value
non è specificato qui, quindi potrebbe essere qualsiasi tipo di oggetto.
value
realtà fosse un numero intero. Se può essere qualsiasi cosa, allora è anche peggio.
else
problema è minore, il problema maggiore è che stai ovviamente restituendo due tipi di dati da una singola funzione, il che rende imprevedibile l'API della funzione.