На странице сложности 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 усложняют метод? Какая интуиция стоит за этим метрическим расчетом сложности методов?
default
finally
нет, потому что они не делают сравнений, потому что сравнения делаются раньше. - person shuangwhywhy   schedule 06.03.2013