Je tombe parfois sur du code similaire à l'exemple suivant (ce que fait exactement cette fonction sort du cadre de cette question):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
Comme vous pouvez le voir, if
, else if
et les else
déclarations sont utilisées conjointement avec la return
déclaration. Cela semble assez intuitif à un observateur occasionnel, mais je pense qu'il serait plus élégant (du point de vue d'un développeur de logiciels) de supprimer le else
-s et de simplifier le code comme ceci:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
Cela a du sens, car tout ce qui suit une return
instruction (dans la même portée) ne sera jamais exécuté, ce qui rend le code ci-dessus sémantiquement égal au premier exemple.
Laquelle des réponses ci-dessus correspond le mieux aux bonnes pratiques de codage? Y a-t-il des inconvénients à l'une ou l'autre méthode en ce qui concerne la lisibilité du code?
Modifier: Une suggestion en double a été faite avec cette question fournie comme référence. Je crois que ma question touche à un sujet différent, car je ne demande pas à éviter les déclarations en double comme présenté dans l'autre question. Les deux questions visent à réduire les répétitions, quoique de manières légèrement différentes.
-1
est un nombre, false
est un booléen et value
n'est pas spécifié ici, il peut donc s'agir de n'importe quel type d'objet.
value
c'est en fait un entier. Si cela peut être quelque chose, c'est encore pire.
else
un problème moindre, le plus gros problème est que vous renvoyez évidemment deux types de données à partir d'une seule fonction, ce qui rend l'imprévisibilité de l'API de la fonction.