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())