Nhờ có một câu hỏi tại Đánh giá mã, tôi đã có một chút bất đồng (về cơ bản là cơ hội để tìm hiểu điều gì đó) về chính xác Độ phức tạp Cyclomatic dành cho mã dưới đây.
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");
}
Khi viết mã này trong Eclipse và sử dụng plugin số liệu Eclipse , nó cho tôi biết rằng Độ phức tạp theo chu kỳ McCabe cho phương thức chính là 2 và đối với thro
phương thức thì nó nói là 2.
Tuy nhiên, một người khác nói với tôi rằng sự phức tạp của việc gọi thro
nhiều lần là number of calls * method complexity
, và do đó tuyên bố rằng độ phức tạp của phương thức chính là 7 * 2 = 14.
Có phải chúng ta đang đo những thứ khác nhau? Cả hai chúng ta có thể đúng không? Hoặc sự phức tạp chu kỳ thực tế ở đây là gì?