とにかく例外をスローするだけの場合に、到達できない break ステートメントを残すのはばかげていますか? 私の防御的な部分は、ロジックが変更された場合に備えて残しておきたいと考えています。私の別の部分では、他の開発者が自分のコードでコンパイラの警告 (「到達不能なコードが検出されました」) を見ることを望んでいません。
switch (someInt)
{
case 1:
// Do something
break;
case 2:
// Do something else
break;
case 3:
// Oh, we don't use threes here!
throw new Exception("Business rules say don't use 3 anymore");
break; // Unreachable...until the fickle business rules change...
default:
throw new Exception("Some default exception");
break; // Unreachable...until...well, you get the idea.
}
何をすべきか?
アップデート
後日スローを削除するとコンパイラエラーが発生するという回答がいくつかあります。ただし、単にスローを削除 (またはコメント) し、その後に中断を加えないと、ケースがスタックされ、意図しない動作になる可能性があります。私はそれがありそうなシナリオだと言っているわけではありませんが...まあ、ありそうなシナリオだけと戦うことについての防御的なプログラミングですか?