[解決済み] Switch文のフォールスルー...許されるのか?[クローズド]
2022-05-14 20:19:20
質問
物心ついたときから、私は 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番目はちょっと危険な気がします。
どのように解決するのですか?
何をもってフォールスルーとするかによるかもしれませんね。 私はこのようなことでもOKです。
switch (value)
{
case 0:
result = ZERO_DIGIT;
break;
case 1:
case 3:
case 5:
case 7:
case 9:
result = ODD_DIGIT;
break;
case 2:
case 4:
case 6:
case 8:
result = EVEN_DIGIT;
break;
}
しかし、ケースラベルの後に別のケースラベルにフォールスルーするコードがある場合、私はかなり常にそれを悪だと考えています。 おそらく、共通のコードを関数に移動し、両方の場所から呼び出す方が良いアイデアでしょう。
関連
-
[解決済み] 1つのケースラベルから制御が落ちることはない
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み] switch文の中で変数を宣言してはいけないのはなぜですか?
-
[解決済み] Stringでswitch文が使えないのはなぜですか?
-
[解決済み] JavaScriptで複数ケースを扱うSwitch文
-
[解決済み] 関数は return 文を1つだけ持つべきですか?
-
[解決済み] switch文の複数ケース
-
[解決済み] C#のSwitch文のフォールスルー?
-
[解決済み】switch文は常にdefault句を含むべきですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メモ帳++で入力時に先頭の空白をタブに変換する。
-
[解決済み] C#のSwitch文のフォールスルー?
-
[解決済み】C#でif/elseとswitch-caseを使うことに大きな違いはあるのでしょうか?
-
[解決済み】悪いコードを書いている人にどう言えばいい?[解決済み]
-
[解決済み] pythonic way to do something N times without index variable?
-
[解決済み] ファクトリーのようなメソッド名を付けるには?
-
[解決済み] あなたが従わざるを得なかった最も奇妙なコーディング標準ルールは何ですか?[クローズド]
-
[解決済み] Switch文のフォールスルー...許されるのか?[クローズド]