Dre*_*rew 8 java maintainability coding-style
鉴于以下代码片段,是否有任何明显的差异?
public boolean foo(int input) {
if(input > 10) {
doStuff();
return true;
}
if(input == 0) {
doOtherStuff();
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
与
public boolean foo(int input) {
if(input > 10) {
doStuff();
return true;
} else if(input == 0) {
doOtherStuff();
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
或者使用这段代码,单退出原则会更好吗?
public boolean foo(int input) {
boolean toBeReturned = false;
if(input > 10) {
doStuff();
toBeReturned = true;
} else if(input == 0) {
doOtherStuff();
toBeReturned = true;
}
return toBeReturned;
}
Run Code Online (Sandbox Code Playgroud)
有没有明显的性能差异?你觉得一个人或多或少比其他人更易于维护/阅读吗?
Pet*_*uza 10
在第二个例子中,您非常清楚地说明两个条件是互斥的.
对于第一个,它不是那么清楚,并且在(不太可能的)事件中,input在两个if之间添加赋值,逻辑将改变.
假设将来有人在input = 0第二个之前添加if.
当然这不太可能发生,但是如果我们在这里谈论可维护性,如果 - 否则清楚地表明存在相互排斥的条件,而一堆ifs则没有,并且它们彼此之间没有那么依赖. - 块.
编辑:现在我看到,在这个特定的例子中,return子句强制相互排他性,但同样,我们讨论的是可维护性和可读性.
无论如何,关于性能,如果这是用Java编码的,你不应该关心几个if块的性能,如果它是在一个非常慢的硬件中嵌入C,也许,但肯定不是用java.
| 归档时间: |
|
| 查看次数: |
4241 次 |
| 最近记录: |