37 votes

Vaut-il mieux envelopper le code dans une instruction "SI" ou vaut-il mieux "court-circuiter" la fonction et revenir?

Je fais peu de codage en JavaScript, et je vais avoir beaucoup de cas où j'ai vérifier certaines choses avant de poursuivre. J'ai pris l'habitude de retourner au début de la fonction, mais je ne suis pas sûr si je suis en train de réaliser ce droit. Je ne sais pas si il ont un impact sur la complexité de mon code comme il grandit.

Je veux savoir de plus expérimenté programmeurs JavaScript, ce qui est une meilleure pratique générale de la deux exemples suivants. Ou est-il hors de propos, et ils sont tous les deux OK façons d'écrire ce particulier SI le bloc?

1) le Retour Précoce ou "Court-Circuit" comme je l'appelle (Garde de la Clause).

ServeAlcohol = function(age)
{
     if(age < 19)
         return;


     //...Code here for serving alcohol.....
}

..Ou...

2) Synthèse de code dans une instruction if.

ServeAlcohol = function(age)
{
     if(age >= 19)
     {
          //...Code here for serving alcohol.....
     }
}

58voto

Parrots Points 10968

D'habitude j'ai le retour d'entrée-validation tout de suite. Imaginez que si vous aviez plusieurs conditionnels, vous auriez un désordre imbriqué de if s immédiatement.

Généralement, une fois la validation passée, j'évite les retours multiples, mais pour la validation, je retourne immédiatement. Le garde plus propre IMHO.

11voto

Brian Mains Points 31772

Je préfère le premier, parce que c'est une condition de garde et que vous quittez directement. Mais je ne pense pas qu'il y ait de problèmes de performances avec l'un ou l'autre, c'est simplement que c'est votre préférence

9voto

Danail Points 3309

Choix personnel. Pour moi, s’il existe des conditions «stop» que je peux vérifier au début de la méthode, je préfère utiliser le modèle «return». Mais seulement si je peux tout faire au début de la méthode.

5voto

vicatcu Points 2583

FWIW, je vais proposer un avis contraire. La Programmation structurée suggère qu'une fonction doit avoir un seul point de sortie. Je pense qu'il y a quelques optimisations du compilateur qui ne sont pas disponibles si vous utilisez de retour anticipé, break, goto et la comme. Aussi plus de branches dans votre code plus difficile à remplir le PROCESSEUR pipeline résultant en une diminution possible des performances... Il y a aussi des raisons pour ne pas revenir au début de cette affaire rigoureux (c'est à dire algebreic) raisonnement à propos de l'exactitude.

La Programmation structurée article de wiki

4voto

MauriceL Points 295

Ça dépend vraiment. J'aime bien un point de retour pour des fonctions simples, mais pour tout ce qui dépasse 10 à 20 lignes, je vais commencer par casser les choses pour des raisons de clarté du code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X