Sonarqube:布尔文字不应该是多余的

Sonarqube : Boolean literals should not be redundant

我有以下漂亮的衬垫:

boolean outcome = count > 0 ? false : true;

但是从 sonaqube 我得到 'Remove the literal "false" boolean value'

solution 似乎假设你可以重写为一个函数

但即使是那个函数也会有一个简单的衬垫并将我置于相同的位置,我不太明白如何修复?想法?

问题是您正在对已经产生 boolean.

的操作进行 额外体操

如果我用完整的语法写出你所编码的内容:

boolean outcome;

if(count > 0){
  outcome = false;
} else {
 outcome = true;
}

本质上,你是在颠倒 count > 0

所以试试

boolean outcome = !(count > 0)

甚至更好

count <= 0

作为对其他人的参考,我是愚蠢的,而 SonarQube 在报告上述内容时是正确的,因为它做的比需要的多。正确的代码是:

boolean outcome = count > 0;

你不需要三元语句 count > 0 的结果是一个 true/false 值...

所以如上所述要扭转结果很简单

 boolean outcome = !(count > 0);