Code Review'daki bir soru sayesinde , Cyclomatic Complexity'nin aşağıdaki kod için tam olarak ne olduğu konusunda küçük bir anlaşmazlığa girdim (bu aslında bir şeyler öğrenme fırsatıdır).
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'de bu kodu yazarken ve Eclipse metrikleri eklentisini kullanırken , ana yöntem için McCabe Cyclomatic Complexity'nin 2 olduğunu ve thro
yöntem için 2 olduğunu söylüyor.
Ancak, bir başkası bana thro
birden çok kez çağrı yapmanın karmaşıklığının olduğunu söyler number of calls * method complexity
ve bu nedenle ana yöntemin karmaşıklığının 7 * 2 = 14 olduğunu iddia eder.
Farklı şeyleri mi ölçüyoruz? İkimiz de doğru olabilir miyiz? Veya buradaki gerçek siklomatik karmaşıklık nedir?