私にとって、次の Java コードは完全に有効で、良いスタイルです。
enum Side { LEFT, RIGHT };
...
Side side = ...;
switch (side) {
case LEFT:
// do something
break;
case RIGHT:
// do something
break;
}
SonarQube のルールSwitchLastCaseIsDefaultCheck
では、これでは十分ではなく、デフォルトのケースが必要です。ここでは、列挙が完全にカバーされているため、デフォルトのケースは不要です。
列挙については、列挙が完全にカバーされているかどうかを確認し、カバーされておらず、デフォルトのケースがない場合に文句を言うテストを見たいと思います(Eclipseはそれを行うことができます)。どちらでもいいはずです。実際、列挙を完全にカバーすると、後で列挙が拡張されたときにコンパイル時の警告が可能になりますが、デフォルトのケースを指定すると実行時にのみ失敗します。
必要に応じて、列挙を完全にカバーし、デフォルトのケースを指定することで、到達不能コードの警告をトリガーできます。