Può tornare e else essere usati in modo intercambiabile in cfscript?
-
08-10-2019 - |
Domanda
Mi piacerebbe conoscere la vostra opinione sull'uso di dichiarazioni return
e else
modo intercambiabile in cfscript. Io di solito uso la seguente sintassi:
if (something) {
// Do something
}
else {
// Do something else
}
E 'di recente si è verificato a me ho potuto fare questo, invece:
if (something) {
// Do something
return;
}
// Do something else
Would questi due stili producono un diverso risultato finale? Mi piace non dover avvolgere il codice in una dichiarazione else
. Il mio pensiero è che se la dichiarazione if
valutata vera e ritorna, il codice qui sotto non verrà eseguito. Se non valuta vero, allora il codice qui sotto verrà eseguito indipendentemente dal fatto che è avvolto in una dichiarazione else
oppure no.
Fa che in questo suono?
Soluzione
Coldfusion come la maggior parte delle lingue fornisce molti modi di realizzare la stessa cosa. Il lavoro del programmatore è quello di scegliere quello corretto per la situazione. Naturalmente "corretto" può avere molte interpretazioni, ma direi che il modo corretto è chiaro, conciso e scalabile.
In questo caso non ci sono vere prestazioni o "linee di codice" differenze. Utilizzando un cambio di un ramo completamente diverso di codice non è chiaro ai miei occhi Tuttavia, utilizzando lo stile rientro anticipato per salvare di una funzione a causa di condizioni non valide è (di nuovo IMO) più chiaro. Considerate i seguenti casi:
if (not isdefined("url.param1")) {
return;
}
if (not len(url.param1)) {
return;
}
if (not refind("[0-9]+", url.param1)) {
return;
}
doSomethingToValid(url.param1);
vs
if (isdefined("url.param1")) {
if (len(url.param1)) {
if (refind("[0-9]+", url.param1)) {
doSomethingToValid(url.param1);
}
}
}
Nel primo caso posso vedere tutta la convalida che sarà applicato in un elenco e posso ottenere tutto fuori del modo in attacco che mi permette di concentrarmi sulla reale consistenza della routine. Nel secondo caso ho sepolto la parte sostanziale del profondo di routine in una sezione nidificato di IFS e quando ho bisogno di aggiungere un'altra regola per la validazione che la struttura codice appena diventa più complesso.
Altri suggerimenti
I due modi di scrivere restituirà gli stessi risultati, ma per migliorare la leggibilità del primo modo è preferito