D'aussi loin que je me souvienne, j'ai évité d'utiliser une instruction switch fall-through. En fait, je ne me souviens pas que cela soit entré dans ma conscience comme un moyen possible de faire les choses car il m'a été percé très tôt dans la tête que ce n'était rien de plus qu'un bug dans la déclaration de commutation. Cependant, aujourd'hui, j'ai rencontré du code qui l'utilise par conception, ce qui m'a immédiatement amené à me demander ce que tout le monde dans la communauté pense de l'échec des instructions switch.
Est-ce quelque chose qu'un langage de programmation ne devrait explicitement pas autoriser (comme le fait C #, bien qu'il fournisse une solution de contournement) ou est-ce une fonctionnalité de tout langage suffisamment puissant pour être laissé entre les mains du programmeur?
Edit: Je n'étais pas assez précis sur ce que j'entendais par fall-through. J'utilise beaucoup ce type:
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something
break;
case 2:
case 3:
case 4:
// Do something
break;
}
Cependant, je suis préoccupé par quelque chose comme ça.
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something, but fall through to the other cases
// after doing it.
case 2:
case 3:
case 4:
// Do something else.
break;
}
De cette façon, chaque fois que le cas est 0, 1, il fera tout dans l'instruction switch. J'ai vu cela par conception et je ne sais tout simplement pas si je suis d'accord que les instructions switch devraient être utilisées de cette façon. Je pense que le premier exemple de code est très utile et sûr. Le second semble assez dangereux.