在博客中看到这种代码驱使作者疯狂..为什么?
public boolean foo() {
boolean b = bar();
if (b == true) {
return true;
}
else {
return false;
}
}
答案 0 :(得分:7)
因为它的版本要短得多:
public boolean foo() {
return bar();
}
正如其他人所指出的那样,整个函数foo
可能是多余的。但是有些情况下无法消除,例如,如果它是在您正在实现的接口中定义的,或者bar
是私有的。
构造if (b == true)
对于没有经验的程序员来说尤其危险,因为它可能被错误地写成if (b = true)
。编译器没有捕获到这个问题,但是会默默地执行if。
答案 1 :(得分:6)
因为它可以写成
public boolean foo() {
return bar();
}
代码不必要地复杂。
答案 2 :(得分:6)
因为foo()
(以及整个功能本身)的调用可以替换为bar()
。
随时写信:
if (something == true) {
return true;
} else {
return false;
}
您所做的只是返回something
的值,为什么不只是return something;
?在OP中提供的代码中,整个函数没有任何意义,因为它只返回另一个函数的返回值。
另一个类似的用例(同样令人讨厌)是:
Foo foo = getFoo();
if (foo == null) {
return null;
} else {
return foo;
}
答案 3 :(得分:4)
以上所有答案中,我认为你甚至不需要打电话给foo()。
只需使用
if(bar())
直接在您调用foo()
的地方根本不需要foo()
功能