switchステートメントのデフォルト部分にブレークを入れるのは悪いコーディングと見なされますか?私が読んでいた本はそれがオプションであると言っていましたが、先生はそれを使うことを数えました。
7 に答える
break
ベストプラクティスは、スイッチの最後であっても、制御が別のケースに流れることを意図していない限り、常にaを使用することです。
switchステートメントの最初と最後のどちらにあるかによって異なります。その後に他case
のsがある場合は、本当に失敗したくない場合を除いてdefault
、おそらくそこが必要です。break
switch (a)
{
case 0:
default:
printf("Default\n");
break;
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
}
先生は非常に衒学者であり、ソースコードに何かを入れてもまったく違いがないことで生徒にペナルティを課していました。
次のようなステートメントにを入れる本当の理由がないのは事実です。break
switch(i) {
case 0:
// whatever
break;
default:
// whatever
}
だが:
break
結局のところ、caseステートメントを配置することをお勧めします。後で別のステートメントが追加された場合はどうなりswitch
ますか?
switch(i) {
case 0:
// whatever
break;
default:
// whatever
case 1:
// OOPS! Is the missing break above intentional or a mistake?
}
誰かがこれが決して起こらないと主張したとしても(これは私見と言うのは非常に強いことです)、たとえば、ソースで余分な空白を使用するのではなく、なぜ彼がこれを数えたのかを先生に尋ねる必要があります。結局のところ、空白はプログラムの意味も変更しません。
私はbreak
、デフォルトの場合を含め、スイッチのすべての場合に必要とされる場所で働いてきました。あなたの先生はなぜ彼または彼女がそれを間違ってマークしたのか説明しましたか?
私は他のみんなに同意します:default
次が最後の場合は必要ありませんcase
。しかし、私(または、さらに悪いことに、他の貧しい獣)がcase
、デフォルトの6か月後に誤って別のものを追加する可能性があるため、とにかく常にそれを入れます。確かに、それはエラーになりますが、入力エラーにすぎません。真夜中のばかげたミスをしたからといって、コードを見つけにくいバグ1に対して脆弱なままにしておく必要があるのはなぜですか。誰がそのような悲しみを必要としますか?
インストラクターへの注意:break
この状況での挿入は防御コードの例であり、これは常に非常に良いことです。
学生への注意:歯を磨き、しかめっ面とうめき声を上げ、ビールを飲み、次に進みます。次の学期はこのインストラクターを避けることを常に忘れないでください。
1これは私が行っていたプロジェクトで実際に起こり、私たちに[原文のまま!私たち:プロジェクトチーム全体]午後中ずっとバグ入力エラーを見つけました。スイッチブロック以外はどこでも見ました。
デフォルトのケースが最後のケースである場合は必要ありません。
ある日、最後のケースを別の場所に移動することにした場合、休憩があった場合にいくつかのバグを保存できる可能性があります。
残りは好みの問題です。悪いコーディングではありません。
default
ブランチは常にswitch
ブロック内の最後のケースである必要があるため、の有無にかかわらず、実行break
は。の後に続行されswitch
ます。break
余計なものなので使われないことが多いです。
ただし、誰かがcase
sの順序を変更することを決定した場合、その存在または欠如がbreak
大きな違いを生む可能性があります。しかし、繰り返しになりますが、default
ケースを別のケースの前に移動すること自体が重大な間違いになります。