我正在维护由不再维护此产品的供应商编写的代码库(旧的Java 3)。

我经常遇到这样的事情:

private boolean doSomething() {
    boolean success = false;
    // do stuff
    if (/*some stuff*/) {
        success = true;
    }
    return success;
}

public void doStuff() {
    boolean ok = (boolean) doSomething();
    if (ok) {
        // do stuff
    }
}


因此,很明显,他们正在尝试通过传回一个指示状态(验证)的布尔值来确定方法的成功/失败...我个人认为这是一种不好的做法,我宁愿将异常冒泡传递给调用者,但这仅仅是我自己。

我很困惑的部分,为什么这个供应商/没有不断地将布尔返回值显式地转换为布尔值?这是多余的,肯定会在运行时造成一些开销,不是吗?我一直都在做错事吗? -还是这只是我不应该关注的风格问题?

最佳答案

它不会在运行时产生开销,因为编译器可以进行强制类型转换。
但这是不必要的。所有你需要的是

if (doSomething()) {
    // do stuff
}


这是某些人的特质怪异,他们不太了解该语言,也没有阅读别人的代码来了解什么是好的样式。

关于java - 明确的返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20666379/

10-12 20:51