1

私は今日、いくつかのコード(C、それが誰かに違いをもたらす場合)を読んでいて、スイッチブロックについて興味を持ちました。

switch (c_type) {
case -1:
    some_function(some_var);
    break;
[...]
default:
    abort();
}

さて、これは完全に単純なスイッチブロックです。それはsome_function(some_var)私が興味を持っている呼び出しです:プログラマーであるあなたが、呼び出しによってプロセスが終了することを絶対に、積極的に、非常に確信している場合、それが完全に不要であっても、あなたはまだブレークステートメントを下に置きますか?それがベストプラクティスだと思いますか?

4

4 に答える 4

9

ベストプラクティスはassert()、関数呼び出しの下に爆弾を投下することだと思います。これには2つの目的があります。ランタイムのこのポイントに到達できないはずであるという事実を文書化し、コードが何らかの方法でそのスポットに到達した場合にエラーメッセージを生成します。

于 2010-07-06T21:26:31.597 に答える
3

そこに休憩を残します。あなたが何について確信しているのかは問題ではありません:あなたは他の人間が読めるようにあなたのプログラムを書きます、そして休憩は与えられたケースが次のケースから完全に分離していることを明らかにします。

今日のコードについては絶対に確信できますが、仕様は明日変更される可能性があり、some_functionもう終了しません。仕様には何も確かではありません(とにかく私の経験では)。

于 2010-07-06T21:26:54.157 に答える
3

呼び出しによってプロセスが終了することを非常に確信している場合は、そのためだけにアサートを挿入します。

そうすれば、誰かが関数を変更して常に終了しない場合でも、バグは最初に発生したときにほぼキャッチされます。

編集:殴られた、ほとんど同じ答えも:/

于 2010-07-06T21:28:22.907 に答える
0

すべての case ステートメントを break または return で終了することは常にベスト プラクティスです。

于 2010-07-06T21:27:10.647 に答える