这就是我所说的。
if (condition) {
aVariable = 1;
return;
}
doSomething();
if (condition) {
aVariable = 1;
} else {
doSomething();
}
其中一种优于其他(约定等)?
答案 0 :(得分:10)
早期返回可以通过减少代码中的嵌套来提高可读性。
在某些语言中,最佳做法是使用单个return语句,例如在C ++中,您应该在顶部分配并在方法的底部取消分配,但Java不是这样的语言,所以更喜欢可读性而不是单一退货声明。
许多人使用单一返回规则,因为他们不理解存在的原因,或者因为他们有托管语言的背景。
请注意
在您评论编写代码的“一种真实方式”之前,请暂停片刻并考虑以下内容。
为什么必须只有一个退货声明?
如果你想不出一个好理由,就不要再争辩说应该是这样了。
答案 1 :(得分:7)
可读性是最重要的。 因此,在函数开始时的早期返回是可以的,但是一旦方法开始执行比检查其imputs /对象状态更复杂的事情,它应该只有一个返回。
如果它太复杂,它应该被重构为多个函数。
答案 2 :(得分:1)
对于最佳实践,return语句应该是最后一行 功能
使用else块是一种很好的方法,因为如果你想在将来添加一些其他代码,第一块代码可能需要编辑
注意:所有方法都有优点和缺点。他们不是Silver bullet解决方案。
答案 3 :(得分:1)
第二个是首选的,因为方法应该只有一个return语句,并且它必须位于方法本身的末尾。 如果您想深入了解该主题,可以使用许多程序对代码进行验证。其中之一是PMD。还有一个有用的eclipse插件可以根据您正在寻找的约定来验证您的代码。
答案 4 :(得分:1)
一旦你点击返回,方法结束并返回堆栈中的调用方法。
public void myMethod(){
if (condition) {
aVariable = 1;
return;
}
doSomething();
}
和
public void myMethod(){
if (condition) {
aVariable = 1;
} else {
doSomething();
}
}
会做同样的事情,但AFAIK首选任何方法只有一个退出点(至少这是Edsger Dijkstra所说的)
答案 5 :(得分:0)
不,你可以两种方式使用。 当你有许多其他条件时,也会使用第一种方法,返回会将你从方法中移出。这样就没有嵌套条件了。
答案 6 :(得分:0)
任何一个代码段都可以使用。它取决于使用代码的上下文。