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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top