Je suis un peu perplexe quand ou non pour 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
seul but est, à mon avis, d'empêcher le code de s'exécuter dans le reste du cas switch
-.
Est-il alors considéré comme plus logique d'avoir un break
en dernier lieu en raison de la cohérence ou de ne pas l'avoir en raison du break
n'appliquant aucune utilisation fonctionnelle? Les deux sont logiques de différentes manières à mon avis.
Cela pourrait dans une certaine mesure être comparé à la fin d'un .php
fichier avec ?>
. Je ne finis jamais avec ?>
principalement en raison du risque de sortie d'espaces vides, mais on pourrait dire que ce serait la chose logique de terminer le fichier.
break
n'est pas techniquement nécessaire après la dernière alternative (ce qui, vous le savez, n'a pas à être default
: c'est parfaitement légal, et parfois même utile de mettre le default
branche en premier); si votre code passe par la fin de l'instruction switch
ou breaks
à la fin de sa dernière branche a le même résultat.
Cependant, je terminerais toujours chaque branche, y compris la dernière, par une instruction return
ou break
, pour trois raisons:
break
ou return
, vous pouvez les réorganiser sans en changer la signification. Il est donc moins probable qu'une telle réorganisation introduise une régression.switch
exactement comme les précédents remplit les deux, ce qui facilite la lecture et la compréhension. Si vous omettez le break
explicite, la dernière branche sera optiquement différente (ce qui est particulièrement important pour un balayage rapide), et afin de voir que ce n'est vraiment pas différent, le lecteur doit descendre au début. niveau granuleux de la lecture des déclarations individuelles.switch
par un break
, cela deviendra automatique après un certain temps, et vous serez moins susceptible de l'oublier accidentellement là où cela compte. Vous entraîner à attendre le break
à la fin de chaque branche permet également de détecter les instructions break
manquantes, ce qui est idéal pour le débogage et le dépannage.É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ère de toujours utiliser une instruction break
, sauf lorsqu'elle est explicite et par conception non souhaitée.
Cela est en partie dû au fait que chaque appel case
se ressemble, ce qui, à mon avis, améliorerait la lisibilité. Mais cela signifie également que si quelqu'un (même vous) choisit d'insérer un case
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 bogues lors de l'ajout nouveau code.
Aucun break
n'est nécessaire après le cas last. J'utilise le mot "dernier" (pas par défaut) car il n'est pas nécessaire que le cas par défaut soit le dernier cas.
switch(x)
{
case 1:
//do stuff
break;
default:
//do default work
break;
case 3:
//do stuff
}
Et nous savons, un break
est nécessaire entre deux case
s consécutifs. Parfois, j'utilise if(a!=0)
dans mon code pour plus de lisibilité lorsque d'autres référent mon code. Je peux choisir d'utiliser if(a)
, ce serait une question de mon choix