真的需要在Sonar Qube中混淆三元规则吗?

时间:2016-08-27 10:18:38

标签: java sonarqube

我写了我的java代码

if(x !=null){
    // Do something
}
else {
    // Do something
}

然后声纳Qube违反了规定。是否真的需要混淆三元的规则?

2 个答案:

答案 0 :(得分:5)

根据您提供的reference link,规则规定:

  

在三元表达式中避免测试中的否定。例如,改写:"(x!= y)?差异:相同" as:"(x == y)?相同:差异"。一致使用此规则可使代码更易于阅读。此外,这解决了琐碎的排序问题,例如"错误情况是否先出现?"或"常见情况是先行?"。

这条规则被命名为“混乱的三元规则”可能有点令人困惑。因为你拥有的是一个常规的if-else结构,而不是一个三元表达式。但是,由于?:可以被认为是if-else语句的简写,因此您也可以在此处应用规则。

有意义吗?就个人而言,我认为绝对。但是,如果它不适用于您(或您公司的)编码风格,因此,您会遇到很多违规行为,我宁愿删除或修改规则。正如参考文献所说:一致性很重要。

答案 1 :(得分:0)

这是必需的,因为它不必要地造成乍看之下的混乱。

例如

if(reporters username is not oliver)
   say it's stackoverflow's concern
else 
   say it's oliver's concern