Dzięki pytaniu na Code Review doszedłem do małego nieporozumienia (co w zasadzie jest okazją do nauczenia się czegoś) na temat tego, czym dokładnie jest złożoność cykliczna dla poniższego kodu.
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");
}
Pisząc ten kod w Eclipse i używając wtyczki Eclipse , mówi mi, że złożoność cykliczna McCabe dla głównej metody wynosi 2, a dla thro
metody 2.
Jednak ktoś inny mówi mi, że złożoność wywoływania thro
wielokrotnego jest number of calls * method complexity
, i dlatego twierdzi, że złożoność głównej metody wynosi 7 * 2 = 14.
Czy mierzymy różne rzeczy? Czy oboje możemy mieć rację? A jaka jest tutaj rzeczywista złożoność cyklomatyczna?