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
的状态无效)。当然,我会抛出一个不同的异常。