【发布时间】:2013-03-06 17:37:42
【问题描述】:
从Sonar Metrics complexity page开始,以下方法的复杂度为5。
public void process(Car myCar){ <- +1
if(myCar.isNotMine()){ <- +1
return; <- +1
}
car.paint("red");
car.changeWheel();
while(car.hasGazol() && car.getDriver().isNotStressed()){ <- +2
car.drive();
}
return;
}
这是该工具计算复杂度的方式:
增加复杂性的关键字:if、for、while、case、catch、 throw、return(这不是方法的最后一条语句)、&&、||、?
为什么case 语句、if 块和while 块会增加方法的复杂性?这种方法复杂度度量计算背后的直觉是什么?
【问题讨论】:
-
因为他们做比较。
defaultfinally不要因为他们不做比较,因为比较是之前做过的。
标签: java sonarqube coding-style complexity-theory cyclomatic-complexity