在Sonar Metrics 复杂性页面中,以下方法的复杂度为 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块会增加方法的复杂性?这种方法复杂度的度量计算背后的直觉是什么?