4

switchステートメントのデフォルト部分にブレークを入れるのは悪いコーディングと見なされますか?私が読んでいた本はそれがオプションであると言っていましたが、先生はそれを使うことを数えました。

4

7 に答える 7

15

breakベストプラクティスは、スイッチの最後であっても、制御が別のケースに流れることを意図していない限り、常にaを使用することです。

于 2011-09-19T20:13:05.447 に答える
8

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;
}
于 2011-09-19T20:14:33.683 に答える
5

先生は非常に衒学者であり、ソースコードに何かを入れてもまったく違いがないことで生徒にペナルティを課していました。

次のようなステートメントにを入れる本当の理由がないのは事実です。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?
}

誰かがこれが決して起こらないと主張したとしても(これは私見と言うのは非常に強いことです)、たとえば、ソースで余分な空白を使用するのではなく、なぜ彼がこれを数えたのかを先生に尋ねる必要があります。結局のところ、空白はプログラムの意味も変更しません。

于 2011-09-19T20:16:14.597 に答える
3

私はbreak、デフォルトの場合を含め、スイッチのすべての場合に必要とされる場所で働いてきました。あなたの先生はなぜ彼または彼女がそれを間違ってマークしたのか説明しましたか?

于 2011-09-19T20:13:34.830 に答える
2

私は他のみんなに同意します:default次が最後の場合は必要ありませんcase。しかし、私(または、さらに悪いことに、他の貧しい獣)がcase、デフォルトの6か月後に誤って別のものを追加する可能性があるため、とにかく常にそれを入れます。確かに、それはエラーになりますが、入力エラーにすぎません。真夜中のばかげたミスをしたからといって、コードを見つけにくいバグ1に対して脆弱なままにしておく必要があるのはなぜですか。誰がそのような悲しみを必要としますか?

インストラクターへの注意:breakこの状況での挿入は防御コードの例であり、これは常に非常に良いことです。

学生への注意:歯を磨き、しかめっ面とうめき声を上げ、ビールを飲み、次に進みます。次の学期はこのインストラクターを避けることを常に忘れないでください。

1これは私が行っていたプロジェクトで実際に起こり、私たちに[原文のまま!私たち:プロジェクトチーム全体]午後中ずっとバグ入力エラーを見つけました。スイッチブロック以外はどこでも見ました。

于 2011-09-19T20:50:53.140 に答える
1

デフォルトのケースが最後のケースである場合は必要ありません。

ある日、最後のケースを別の場所に移動することにした場合、休憩があった場合にいくつかのバグを保存できる可能性があります。

残りは好みの問題です。悪いコーディングではありません。

于 2011-09-19T20:14:14.673 に答える
0

defaultブランチは常にswitchブロック内の最後のケースである必要があるため、の有無にかかわらず、実行breakは。の後に続行されswitchます。break余計なものなので使われないことが多いです。

ただし、誰かがcasesの順序を変更することを決定した場合、その存在または欠如がbreak大きな違いを生む可能性があります。しかし、繰り返しになりますが、defaultケースを別のケースの前に移動すること自体が重大な間違いになります。

于 2011-09-19T20:13:11.600 に答える