Peut retourner et d'autre des déclarations sont utilisés de façon interchangeable dans CFScript?

StackOverflow https://stackoverflow.com/questions/4629594

Question

Je voudrais connaître votre opinion sur l'utilisation de déclarations de return et else de manière interchangeable dans CFScript. J'utilise généralement la syntaxe suivante:

if (something) {
  // Do something
}
else {
  // Do something else
}

Il a récemment eu lieu à moi que je pouvais faire ceci:

if (something) {
  // Do something
  return;
}
// Do something else

ce que ces deux styles donnent un résultat final différent? J'aime ne pas avoir à envelopper le code dans une instruction else. Ma pensée est que si l'instruction if évalue vrai et retourne, le code ci-dessous, il ne fonctionnera pas. Si elle n'évalue pas vrai, alors le code ci-dessous il fonctionnera indépendamment du fait qu'il est enveloppé dans une déclaration else ou non.

Est-ce que ce droit sonore?

Était-ce utile?

La solution

Coldfusion comme la plupart des langues offre de nombreuses façons d'accomplir la même chose. Le travail du programmeur est de choisir celui qui correspond à la situation. Bien sûr « correct » peut avoir plusieurs interprétations mais je dirais que la bonne façon claire, concise et évolutive.

Dans ce cas, il n'y a pas de performance réelle ou « lignes de code » différences. L'utilisation d'un retour pour une branche tout à fait différent du code est pas clair à mes yeux cependant, en utilisant le style début de retour à écoper d'une fonction en raison de conditions non valide est (encore une fois l'OMI) plus claires. Considérez les cas suivants:

if (not isdefined("url.param1")) {
  return;
}
if (not len(url.param1)) {
  return;
}
if (not refind("[0-9]+", url.param1)) {
  return;
}
doSomethingToValid(url.param1);

contre

if (isdefined("url.param1")) {
  if (len(url.param1)) {
    if (refind("[0-9]+", url.param1)) {
      doSomethingToValid(url.param1);
    }
  }
}

Dans le premier cas, je peux voir toute la validation qui sera appliquée dans une liste et je peux l'obtenir tout de la route à l'avant qui me permet de vous concentrer sur la substance réelle de la routine. Dans le second cas, je l'ai enterré la partie importante de la profondeur de routine dans une section imbriquée de ifs et quand je dois ajouter une autre règle à la validation de cette structure de code devient un peu plus complexe.

Autres conseils

Les deux façons d'écrire il les mêmes résultats, mais pour une meilleure lisibilité de la première est preferred

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top