कोड समीक्षा में एक प्रश्न के लिए धन्यवाद, मैं थोड़ा असहमति (जो अनिवार्य रूप से कुछ सीखने का अवसर है) के बारे में मिला, जो कि नीचे दिए गए कोड के लिए वास्तव में साइक्लोमैटिक जटिलता है।
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");
}
ग्रहण में इस कोड को लिखने और ग्रहण मेट्रिक्स प्लगइन का उपयोग करते समय , यह मुझे बताता है कि मुख्य विधि के लिए मैककेब साइक्लोमैटिक जटिलता 2 है, और thro
विधि के लिए यह 2 कहता है।
हालांकि, कोई और मुझे बताता है कि thro
कई बार कॉल करने की जटिलता है number of calls * method complexity
, और इसलिए दावा है कि मुख्य विधि की जटिलता 7 * 14 = 14 है।
क्या हम अलग-अलग चीजों को माप रहे हैं? क्या हम दोनों सही हो सकते हैं? या यहाँ वास्तविक चक्रीय जटिलता क्या है?