对我来说,下面的 Java 代码是完全有效的,很好的风格:
enum Side { LEFT, RIGHT };
...
Side side = ...;
switch (side) {
case LEFT:
// do something
break;
case RIGHT:
// do something
break;
}
对于 SonarQube 的规则SwitchLastCaseIsDefaultCheck
,这还不够好,它需要一个默认情况。现在在这里,默认情况是多余的,因为枚举已被完全覆盖。
对于枚举,我希望看到一个测试来检查枚举是否被完全覆盖并抱怨它是否没有被覆盖并且没有默认情况(Eclipse 可以做到这一点)。两者都应该没问题。事实上,完全覆盖枚举允许稍后在扩展枚举时发出编译时警告,而给出默认情况只会在运行时失败。
可选地,完全覆盖枚举和给出默认情况都可能触发无法访问代码的警告。