私が覚えている限り、switch ステートメントのフォールスルーを使用することは避けてきました。実は、switch ステートメントのバグにすぎないということは早い段階で頭に突き刺されていたので、それが可能な方法として意識に入った覚えはありません。しかし、今日、意図的にそれを使用するコードに出くわしたので、コミュニティの誰もが switch ステートメントのフォールスルーについてどう考えているのかすぐに気になりました。
それはプログラミング言語が明示的に許可すべきではないものですか (C# のように、回避策は提供されます)、それともプログラマーの手に委ねるほど強力な言語の機能ですか?
編集: フォールスルーの意味が十分に具体的ではありませんでした。私はこのタイプをよく使います:
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something
break;
case 2:
case 3:
case 4:
// Do something
break;
}
とはいえ、こんなのが気になります。
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;
}
このように、case が 0、1 のときはいつでも、switch ステートメントですべてを実行します。私はこれを設計上見てきましたが、switch ステートメントをこのように使用することに同意するかどうかはわかりません。最初のコード例は非常に便利で安全だと思います。2番目はちょっと危険なようです。