返回类型为void的方法是否应使用return语句?

时间:2009-12-15 19:27:29

标签: java return-type

我知道有时候使用return;可以在Java中起到有用的作用,例如在守卫中:

public void foo(Bar bar) {
    if(bar == null)
        return;

    // bar is not null, go ahead and do stuff with it
}

但是到达返回类型为void的方法的末尾呢?例如,

public void printMenu() {
    System.out.println("Print out some boilerplate info here, line 1.");
    System.out.println("Print out some boilerplate info here, line 2.");
    System.out.println("Print out some boilerplate info here, line 3.");

    return;
}

除了纯粹的样式偏好之外,是否有任何理由支持或反对return;?如果是这样,他们是什么?

编辑:嗯,快速得到了回答。总结下面发布的15个答案:“不。”

11 个答案:

答案 0 :(得分:47)

也许你是按行代码付款的?

除此之外,最后没有理由把空回来。

答案 1 :(得分:10)

我自己避开它们。它只是一个无用的代码行。事实上,PMD有一条规则可以检查这些无用的return语句。

答案 2 :(得分:4)

我认为,即使从风格的角度来看,也没有理由在最后有一个悬空回归。毕竟,你知道它会回来,因为那里有一个结束支撑......

答案 3 :(得分:1)

纯粹基于风格的问题,绝对没有区别(可能是额外的asm指令,但谁在乎?)。无论您感觉更舒服,还是遵循先前在代码中建立的约定。

答案 4 :(得分:1)

我说不要这样做。 void 函数中的返回语句仅用于打破语句的逻辑。如果你开始这样做,那么你向你的代码的读者发送一个令人困惑的陈述,你会想到也许你计划你忘记了一些 if 陈述。始终追求可读性。

答案 5 :(得分:1)

structured programming的一个想法是:

每个例程应该只有一个入口点和一个出口点。

如果您订阅该策略,则return语句指示退出例程的唯一方法。

在实践中,该政策并没有使代码更加清晰,而且自20世纪70年代以来它一直被忽视。如果在其他例程中允许多个return语句,则应该允许零返回语句,这是最有意义的。

答案 6 :(得分:1)

我认为不必要的陈述只是噪音,所以我不会在最后加上那个回报。话虽如此,如果某些内容不符合我的要求,我会在方法的开头添加返回,或者更好的是,我会抛出IllegalArgumentException异常。

答案 7 :(得分:0)

在您的示例中,最后的“返回”是个人,团队或组织风格的问题。我个人更喜欢做一个明确的回报。

答案 8 :(得分:0)

我认为除个人偏好外,没有区别。第一种情况我认为是合法的。否则,您应该将语句打包在一个大的if语句中。

最后一个例子,回报是多余的。

答案 9 :(得分:0)

我会从一致性角度避免它。它总是比不记得总是添加它更容易。

答案 10 :(得分:0)

它没有任何用途,但是如果你想这样做(因为你团队中的每个人都是这样做的或者出于某种原因),你可以做到。