Java - 返回或if-else

时间:2011-12-01 11:02:45

标签: java coding-style

  

可能重复:
  Should a function have only one return statement?

这就是我所说的。

if (condition) {
    aVariable = 1;
    return;
}
doSomething();

if (condition) {
    aVariable = 1;
} else {
    doSomething();
}

其中一种优于其他(约定等)?

7 个答案:

答案 0 :(得分:10)

早期返回可以通过减少代码中的嵌套来提高可读性。

在某些语言中,最佳做法是使用单个return语句,例如在C ++中,您应该在顶部分配并在方法的底部取消分配,但Java不是这样的语言,所以更喜欢可读性而不是单一退货声明。

许多人使用单一返回规则,因为他们不理解存在的原因,或者因为他们有托管语言的背景。

请注意

在您评论编写代码的“一种真实方式”之前,请暂停片刻并考虑以下内容。

为什么必须只有一个退货声明?

如果你想不出一个好理由,就不要再争辩说应该是这样了。

答案 1 :(得分:7)

可读性是最重要的。 因此,在函数开始时的早期返回是可以的,但是一旦方法开始执行比检查其imputs /对象状态更复杂的事情,它应该只有一个返回。

如果它太复杂,它应该被重构为多个函数。

答案 2 :(得分:1)

  1. 对于最佳实践,return语句应该是最后一行 功能

  2. 使用else块是一种很好的方法,因为如果你想在将来添加一些其他代码,第一块代码可能需要编辑

  3. 注意:所有方法都有优点和缺点。他们不是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)

任何一个代码段都可以使用。它取决于使用代码的上下文。