关于java编码风格: return 和 if-else

Java - return or if-else

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Should a function have only one return statement?

这就是我要说的。

1
2
3
4
5
6
7
8
9
10
11
if (condition) {
    aVariable = 1;
    return;
}
doSomething();

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

其中一个优先于另一个(惯例等)?


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

在某些语言中,最好有一个返回语句,例如在C++中,您应该在顶部分配并在方法的底部进行分配,但是Java不是这样的语言,因此比起单个返回语句更喜欢可读性。

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

请注意

在您对编写代码的"一种真正的方式"发表评论之前,请暂停片刻并考虑以下内容。

为什么必须只有一个返回语句?

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


可读性是最重要的。所以函数开头的早期返回是可以的,但一旦方法开始执行比检查其对象的输入/状态更复杂的操作,它应该只有一个返回。

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


一旦您点击返回,该方法结束并返回到堆栈中的调用方法。

1
2
3
4
5
6
7
public void myMethod(){
if (condition) {
    aVariable = 1;
    return;
}
doSomething();
}

1
2
3
4
5
6
7
public void myMethod(){
if (condition) {
    aVariable = 1;
} else {
    doSomething();
}
}

也会这样做,但是对于任何一种方法来说,Afaik最好只有一个出口点(至少Edsger Dijkstra是这么说的)


第二个是首选的,因为方法应该只有一个返回语句,并且必须在方法本身的末尾。如果您想更深入地讨论这个主题,有许多程序可以对您的代码进行验证。其中之一就是PMD。还有一个有用的Eclipse插件,可以根据您正在寻找的约定来验证您的代码。


  • 对于最佳实践,返回语句应该是最后一行函数的

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

  • 注:所有方法都有优缺点。他们不是银弹解决方案。


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


    不,你可以用两种方式。当您有许多其他条件时,也使用第一种方法,返回将使您离开方法。这样就没有嵌套条件。