多亏了Code Review的一个问题,我对以下代码的确切复杂度有一点分歧(这本质上是一个学习的机会)。
public static void main(String[] args) {
try {
thro();
thro();
thro();
thro();
thro();
thro();
thro();
}
catch (NullPointerException e) {
}
}
private static Random random = new Random();
public static void thro() throws NullPointerException {
if (random.nextBoolean())
throw new NullPointerException();
System.out.println("No crash this time");
}
在Eclipse中使用Eclipse指标插件编写此代码时,它告诉我main方法的McCabe Cyclomatic Complexity为2,thro
方法为2。
但是,其他人告诉我,thro
多次调用的复杂度为number of calls * method complexity
,因此声称main方法的复杂度为7 * 2 = 14。
我们在衡量不同的事物吗?我们俩可以正确吗?还是这里实际的圈复杂度是多少?