ขอบคุณสำหรับคำถามที่รีวิวรหัสฉันได้มีความขัดแย้งเล็กน้อย (ซึ่งเป็นโอกาสที่จะเรียนรู้บางสิ่งบางอย่าง) เกี่ยวกับสิ่งที่ซับซ้อน Cyclomatic สำหรับรหัสด้านล่าง
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มันจะบอกฉันว่า McCabe Cyclomatic Complexity สำหรับวิธีหลักคือ 2 และสำหรับthro
วิธีที่มันบอกว่า 2
อย่างไรก็ตามมีคนอื่นบอกฉันว่าความซับซ้อนของการโทรthro
หลายครั้งคือnumber of calls * method complexity
และดังนั้นจึงอ้างว่าความซับซ้อนของวิธีการหลักคือ 7 * 2 = 14
เราวัดสิ่งต่าง ๆ หรือไม่? เราทั้งคู่สามารถแก้ไขได้ไหม? หรือความซับซ้อนตามวัฏจักรจริงคืออะไรที่นี่?