避免否定三个布尔(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:混淆(

在具有其他条款的if表达式中,避免在测试中否定。

例如,rephrase:if(x!= y(diff((;否则((;AS:if(x == y(same((;否则diff((;如果(x!= y(没有其他情况的情况通常是返回案例,那么对此规则的一致使用使代码更易于阅读。

另外,这可以解决琐碎的订购问题,例如错误案例首先出现吗?还是常见的情况首先?

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

怎么样:

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");
}

最新更新