有一个只在返回类型为void的函数中返回的else分支是好还是坏?比如这段代码:
public void myFunc() {
if (<some condition>) {
//run some code
} else {
return;
}
}
答案 0 :(得分:1)
请注意,此主题基于意见,您可能会看到用户与用户之间的许多不同偏好。
对于可读性和可维护性,您应该尝试降低代码的复杂性。因此,您还希望减少嵌套。因此,我的首选变体是:
public void myFunc() {
// Directly leave if condition does not hold
if (!condition) {
return;
}
// Now do the rest of the code
}
如果您想坚持使用当前版本,那么我建议只删除else
部分,因为它只会加剧我的可读性,所以:
public void myFunc() {
if (condition) {
// Do something
}
// You can always leave a comment if you think
// that helps a reader, so you can put "Do nothing
// if condition does not hold" here
}
然而如上所述,我个人更喜欢第一个变体,因为它减少了整个代码的嵌套。
答案 1 :(得分:0)
不,如果您没有进行任何操作,则不需要此else语句。 如果条件不满足,则else语句基本上用于执行操作。如果您没有执行任何操作,最佳做法是不写else语句。
public void myFunc() {
if (<some condition>) {
//call FunctionA();
} else {
//call FunctionB();
}
}
在上述情况下,使用else是有效的。但是如果你没有做任何操作,那么这句话就没用了。请阅读Robert Cecil Martin的清洁代码簿。它将帮助您编写干净的代码。
答案 2 :(得分:-1)
来自java.lang.Void
class documentation:
Void
类是一个不可实例化的占位符类,用于保存对表示Java关键字Class
的{{1}}对象的引用。
所以以下任何一项都足够了:
void
进行参数设置并返回Object
或new Object()
。null
进行参数设置并返回Void
。null
进行参数化。你不能使这个方法NullObject
,而其他任何东西都会返回。由于忽略了某些东西,你可以退货。