我知道有时候使用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;
?如果是这样,他们是什么?
答案 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)
它没有任何用途,但是如果你想这样做(因为你团队中的每个人都是这样做的或者出于某种原因),你可以做到。