2013-08-02 69 views
3

我布置了一些维护任务的Java程序,发现这个:这个布尔setter是什么意思?

public void setActiveCode(boolean isActiveCode) { 
    this.isActiveCode = isActiveCode & Boolean.TRUE; 
} 

类型的this.isActiveCodeboolean,重复在类中的每个布尔制定者同样的概念。我无法弄清楚为什么这样做,我不能问最初的开发者。

会有这样做的任何正当理由吗?

+6

我当然想不起一个。看起来像[货物崇拜编程](http://en.wikipedia.org/wiki/Cargo_cult_programming)给我的一个主要例子。 –

+0

不会。这证明了我的理论,即所有程序员都应该被迫背诵摩根法则。更不用说运营商的优先级和其他一些基础知识。 – EJP

+0

特别奇怪的是,一个'&'是一个按位运算符,而不是普通的'boolean'运算符'&&',并且使用'Boolean.TRUE'而不是简单的'true'。 – jpmc26

回答

9

这样做会有什么正当理由吗?

号这只是与清晰度零增益冗长的代码(可以说,因为这里的清晰度损失你想知道它的全部)。

这让我想起

public boolean isTrue(boolean b) { 
    if(b == true) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

不幸的是,你会在野外看到不时我。真是太伤心了

+5

刚刚也是:http://i.imgur.com/1Dd3KLS.png – 2013-08-03 01:31:05

1

它的奇怪。布尔逻辑可以与逻辑&一起使用,但这是无用的,因为a & true = a。似乎是一个开发人员特定的OCD。