Java 这个代码有什么严重的错误?在我看来,它在语义上是正确的
在一篇博文中看到这种代码让作者发疯。。为什么?Java 这个代码有什么严重的错误?在我看来,它在语义上是正确的,java,optimization,Java,Optimization,在一篇博文中看到这种代码让作者发疯。。为什么? public boolean foo() { boolean b = bar(); if (b == true) { return true; } else { return false; } } 因为它可以写成 public boolean foo() { return bar(); } 代码不必要地复杂。因为它的版本要短得多: public boolean fo
public boolean foo() {
boolean b = bar();
if (b == true) {
return true;
}
else {
return false;
}
}
因为它可以写成
public boolean foo() {
return bar();
}
代码不必要地复杂。因为它的版本要短得多:
public boolean foo() {
return bar();
}
正如其他人所指出的,整个功能foo
可能是冗余的。但是,在某些情况下,它是无法消除的,例如,如果它是在您正在实现的接口中定义的,或者如果bar
是私有的
构造
if(b=true)
对于没有经验的程序员来说尤其危险,因为它可能被错误地写成if(b=true)
。编译器不会发现这个问题,但会一直静默地执行if的真正分支。因为对foo()
(以及整个函数本身)的调用可以替换为bar()
任何时候你写信:
if (something == true) {
return true;
} else {
return false;
}
你所做的一切就是返回某物的值
,那么为什么不只是返回某物代码>?在OP中提供的代码中,整个函数没有存在的意义,因为它只是返回另一个函数的返回值
另一个类似的用例(同样令人讨厌)是:
在以上所有答案中,我认为您甚至不需要调用foo()
只用
if(bar())
直接在您调用foo()的地方
根本不需要foo()
函数什么博客帖子?无论如何,foo(){return bar();}
要好得多,尽管代码中没有语义错误。没有什么不对的,只是有点不对inefficient@Codeek多个冗余语句是错误的。这使得代码更难阅读。因此效率低下:)@1111不一定,例如,如果你必须实现一个接口。我认为foo()只是为了把讨厌的代码放进一些东西中。
if(bar())