我遇到以下(简化)代码的情况:
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的情况通常是返回情况,因此一致使用此规则使代码更容易阅读。
此外,这解决了琐碎的排序问题,例如错误情况首先出现?或者常见情况是先行吗?
我应该如何重写这些表达式?
答案 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");
}