避免对三个布尔值的否定(PMD规则)

时间:2017-04-27 08:25:20

标签: java pmd

我遇到以下(简化)代码的情况:

if (x== null && y == null && z == null) {
   logger.warning("bla bla");
} else if (x != null) {
   // Do some dispatch for x
} else if (y != null) {
   // Do some dispatch for y
} else {
   // Do some dispatch for z
}

我对* != null表达式的PMD违规行为(即使我已经开始对if案例进行肯定比较(==)。

  

混淆三元(pmd:ConfusingTernary)

     

在带有else子句的if表达式中,避免在测试中使用否定。

     

例如,rephrase:if(x!= y)diff();别的(); as:if(x == y)same(); else diff();大多数if(x!= y)没有else的情况通常是返回情况,因此一致使用此规则使代码更容易阅读。

     

此外,这解决了琐碎的排序问题,例如错误情况首先出现?或者常见情况是先行吗?

我应该如何重写这些表达式?

1 个答案:

答案 0 :(得分:0)

这个怎么样:

if (x != null) {
    // Do some dispatch for x
} else if (y != null) {
    // Do some dispatch for y
} else if (z != null) {
   // Do some dispatch for z
} else {
   log.warn("error msg");
}