Je suis un peu perplexe quand ou non à inclure break
après le dernier cas, souvent default
.
switch (type) {
case 'product':
// Do behavior
break;
default:
// Do default behavior
break; // Is it considered to be needed?
}
break
Je crois comprendre que le seul but est d’empêcher le code de traverser le reste de la switch
casse.
Est-il alors considéré comme plus logique d’avoir un break
dernier pour des raisons de cohérence ou d’éviter de l’avoir du fait de son break
non-utilisation fonctionnelle? Les deux sont logiques de différentes manières à mon avis.
Cela pourrait être comparé dans une certaine mesure à la fin d'un .php
fichier ?>
. Je ne termine jamais avec ?>
principalement en raison du risque de sortie d'espaces vides, mais on pourrait argumenter que ce serait la chose logique à la fin du fichier.
la source
break
dernier cas aswell :)break
(ou une autre instruction de flux de contrôle qui quitte lecase
) est techniquement nécessaire après la dernière alternative.switch
langages étaient au courant des problèmes de retombée dans les langues existantes et voulaient les prévenir. Les règles imposées par C # correspondent à peu près aux recommandations de ma réponse.break
comme un NO-OP au lieu de générer unejmp
instruction à la prochaine, correct?Étant donné l’ambiguïté qui existe autour de l’utilisation de
switch-case
dans la plupart des langues, lors de son utilisation, je suggérerais de toujours utiliser unebreak
déclaration, sauf si elle est explicitement et par définition non voulue .Ceci est en partie dû au fait que chaque
case
appel est identique, ce qui, à mon avis, améliorerait la lisibilité. Mais cela signifie aussi que si quelqu'un (même vous) choisit d'insérer uncase
après le dernier à un stade ultérieur, il n'a pas besoin de se préoccuper de vérifier le bloc précédent, ce qui pourrait aider à réduire les bugs lors de l'ajout de nouveau code.la source
case foo: case bar: ...
), je mets un commentaire explicite dans le sens où je veux que la chute se produise. Le rend beaucoup plus clair.// no break
à la place debreak;
[[fallthrough]]
attribut en cas de C ++.Il n'y a pas
break
nécessaire après le dernier cas. J'utilise le mot " dernier " (pas par défaut ) car ce n'est pas nécessaire, par défaut le cas est le dernier.Et nous savons, a
break
est nécessaire entre deuxcase
s consécutifs . Parfois, j'utiliseif(a!=0)
dans mon code pour plus de lisibilité lorsque d'autres se réfèrent à mon code. Je peux choisir d'utiliserif(a)
, ce serait une question de mon choixla source
case
à la fin de la votreswitch
sans vérifier qu'ilbreak
existait bien (ce serait la faute de ce programmeur, mais il vaut mieux être prudent, pour une raison quelconque, parce que vous pourriez être ce programmeur dans 6 mois-),
à la fin des tableaux au cas où une nouvelle valeur est insérée. Cependant, cela casse certains codes et a généralement l’air moche :),
. Incase, adefault
été conçu pour être le dernier cas. Peut-être que la langue considérerait unbreak
après comme une erreur. En supposant qu’ilbreak
était permis de différencier UNIQUEMENT deux cas.