Java 默认情况是否必要

Java 默认情况是否必要,java,coding-style,switch-statement,Java,Coding Style,Switch Statement,我有一句话是这样说的: public $type function_name($enum e){ if(e != null) switch(e){ case A: return x1; case B: return x2; case C: return x3; //default: do some operations } // default or e = null do the exact same operations } 我的问题是:如果在方法的其余部分处理默认情况,是否有必要(就良好

我有一句话是这样说的:

public $type function_name($enum e){
if(e != null)
switch(e){
case A: return x1;
case B: return x2;
case C: return x3;
//default: do some operations
}
// default or e = null
do the exact same operations
}

我的问题是:如果在方法的其余部分处理默认情况,是否有必要(就良好的编码风格而言)将其添加到switch语句中(基本上,复制“如果发生任何其他情况”的代码-在这种情况下,switch的默认值,e=null,等等)?

在switch情况下不需要默认情况,但是,如果您定义的案例中没有一个发生,那么使用它并定义一个默认案例是一个好习惯。如果你复制你的代码,这是不好的


希望有帮助。

默认情况下是不必要的,但您应该始终拥有它,并记录/抛出异常。如果传递的值出现错误或问题,您将立即知道问题所在。

如果将其添加到
default
子句中,则最后一行

throw new YException();
将是死代码

请注意,在任何情况下,代码都不会到达最后一行。如果
e
满足
A、B或C
的情况,它将到达
return
语句,因此它将退出该函数。如果这些情况都不满足,则将达到
默认值中的
抛出


总之:您应该将其添加到
default
子句中(最好始终包含
default
),并删除最后一行
throw

如果与同一变量的switch组合使用对我来说没有意义。 它可以工作,但它是自找麻烦。
为什么不将异常作为默认操作?您根本不需要重复的代码。

重复的代码没有任何好处,但它总是不好的,因为它也处理e==null的情况。您是对的,但我认为您不希望抛出相同的异常,因为这些是不同的问题。假设我这样做。也许在大多数情况下我不会,在这种情况下,这是一个无关紧要的问题。但是可能有一些我可能真的想要执行相同的操作(抛出异常或其他什么)。然后你可以在外部抛出该异常,但是由于总是建议使用
默认值
,所以你应该添加它,并在没有遇到任何情况时放入日志/其他你想执行的操作(可能是因为
e
的状态无效)。当然,我会抛出一个不同的异常。