在博客中看到这种代码驱使作者疯狂..为什么?
public boolean foo() {
boolean b = bar();
if (b == true) {
return true;
}
else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
因为它的版本要短得多:
public boolean foo() {
return bar();
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的那样,整个功能foo可能是多余的.但是,有些情况无法消除,例如,如果它是在您正在实现的接口中定义的,或者是否bar是私有的.
if (b == true)对于没有经验的程序员来说,这个结构特别危险,因为它可能被错误地写成了if (b = true).编译器没有捕获到这个问题,但是会默默地执行if的true分支.
因为foo()可以替换对(和整个函数本身)的调用bar().
你写的任何时候:
if (something == true) {
return true;
} else {
return false;
}
Run Code Online (Sandbox Code Playgroud)
你所做的只是返回价值something,为什么不return something;呢?在OP中提供的代码中,整个函数没有任何意义,因为它只返回另一个函数的返回值.
另一个类似的用例(同样令人讨厌)是:
Foo foo = getFoo();
if (foo == null) {
return null;
} else {
return foo;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |