[解決済み】switch文は常にdefault句を含むべきですか?
2022-04-18 17:48:14
質問
私が初めてコードレビューを受けたとき(しばらく前)、すべてのswitch文にdefault句を含めるのがよい習慣であると言われました。 最近、このアドバイスを思い出したのですが、その正当な理由が思い出せません。 今となっては、かなり奇妙に聞こえます。
-
デフォルトのステートメントを常に含めるべき賢明な理由はありますか?
-
これは言語依存なのでしょうか? 当時使っていた言語を覚えていないのですが、もしかしたら、ある言語には適用され、他の言語には適用されないのでしょうか?
どのように解決するのですか?
スイッチのケースは
ほとんど
は必ず
default
の場合です。
を使用する理由
default
1.予期せぬ値を「キャッチ」するために
switch(type)
{
case 1:
//something
case 2:
//something else
default:
// unknown type! based on the language,
// there should probably be some error-handling
// here, maybe an exception
}
2. デフォルト」アクションを処理するために、ケースは特別な動作のためのものである。
メニュー駆動型のプログラムやbashのシェルスクリプトではよく見かけます。また、switch-caseの外で宣言された変数が初期化されておらず、それぞれのケースで異なる値に初期化されている場合にも見られます。この場合、変数にアクセスするコードがエラーを発生させないように、デフォルトでも初期化する必要があります。
3. コードを読んでいる人に、そのケースをカバーしていることをアピールするため。
variable = (variable == "value") ? 1 : 2;
switch(variable)
{
case 1:
// something
case 2:
// something else
default:
// will NOT execute because of the line preceding the switch.
}
これは単純化しすぎた例ですが、重要なのは、コードを読んだ人が、なぜ
variable
は1か2以外ではありえない。
を使用しない唯一のケースとして考えられるのは
default
は
スイッチが何かをチェックするときに、他の選択肢を無視できることが明らかな場合。
switch(keystroke)
{
case 'w':
// move up
case 'a':
// move left
case 's':
// move down
case 'd':
// move right
// no default really required here
}
関連
最新
-
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 実装 サイバーパンク風ボタン