3

私にとって、次の Java コードは完全に有効で、良いスタイルです。

enum Side { LEFT, RIGHT };
...
Side side = ...;
switch (side) {
case LEFT:
    // do something
    break;
case RIGHT:
    // do something
    break;
}

SonarQube のルールSwitchLastCaseIsDefaultCheckでは、これでは十分ではなく、デフォルトのケースが必要です。ここでは、列挙が完全にカバーされているため、デフォルトのケースは不要です。

列挙については、列挙が完全にカバーされているかどうかを確認し、カバーされておらず、デフォルトのケースがない場合に文句を言うテストを見たいと思います(Eclipseはそれを行うことができます)。どちらでもいいはずです。実際、列挙を完全にカバーすると、後で列挙が拡張されたときにコンパイル時の警告が可能になりますが、デフォルトのケースを指定すると実行時にのみ失敗します。

必要に応じて、列挙を完全にカバーし、デフォルトのケースを指定することで、到達不能コードの警告をトリガーできます。

4

3 に答える 3

3

適切な をスローするデフォルトのケースを常に含めることをお勧めしますRuntimeException。このようにして、将来の開発者が に何かを追加したり、ステートメントenumを更新するのを忘れたりするのを防ぎます。switch

于 2013-10-16T09:15:33.273 に答える
0

結局のところ、この質問をしてから 3 年後squid:SwitchLastCaseIsDefaultCheckenum. 少なくとも Sonarqube の Java プラグインの 4.4.0.8066 については、おそらくしばらくの間、それを確認できます。そして、それは私にとって非常に満足のいく答えです。

于 2017-01-09T14:21:27.227 に答える