जटिलता को मापने के लिए सबसे आम मैट्रिक्स (या सादगी, यदि आप जटिलता के विपरीत होने के लिए सरलता लेते हैं) मैककेबे के साइक्लोमैटिक कॉम्प्लेक्सिटी और हाल्टड कॉम्प्लेक्सिटी मेट्रिक्स हैं ।
साइक्लोमैटिक जटिलता किसी दिए गए इकाई के माध्यम से अलग-अलग रास्तों की संख्या को मापता है, आमतौर पर एक विधि या फ़ंक्शन, हालांकि यह एक वर्ग पर भी गणना की जा सकती है। जैसे-जैसे रास्तों की संख्या बढ़ती है, किसी दिए गए मॉड्यूल के माध्यम से डेटा के प्रवाह को याद रखना अधिक कठिन हो जाता है, जो कि कार्यशील मेमोरी की अवधारणा से संबंधित है । उच्च साइक्लोमैटिक जटिलता एक मॉड्यूल का परीक्षण करने की क्षमता में कठिनाई का संकेत देती है - सिस्टम के माध्यम से विभिन्न रास्तों को कवर करने के लिए अधिक परीक्षण मामलों की आवश्यकता होती है। ऐसे अध्ययन भी हुए हैं जिन्होंने उच्च चक्रवाती जटिलता को उच्च दोष दर से जोड़ा है। आमतौर पर, 10 की एक चक्रीय जटिलता इंगित करती है कि एक इकाई की समीक्षा की जानी चाहिए और संभवतः इसे फिर से भरना चाहिए।
Halstead जटिलता उपाय कुल और अलग-अलग ऑपरेटरों और ऑपरेंड्स के इनपुट का उपयोग करके कोड के एक टुकड़े की मात्रा, कठिनाई और प्रयास की गणना करते हैं। कठिनाई, जो (अद्वितीय ऑपरेटरों / 2 की संख्या) * (ऑपरेंड की कुल संख्या / अद्वितीय ऑपरेंड की संख्या) है, सिस्टम को सीखने या कोड समीक्षा करने जैसे कार्यों के लिए कोड को पढ़ने और समझने की क्षमता से बंधा है। फिर, आप इसे सिस्टम स्तर, एक कक्षा स्तर, या एक विधि / फ़ंक्शन स्तर पर गिन सकते हैं। इन मापों की गणना करने के बारे में कुछ पोस्टिंग यहां और यहां दी गई है ।
बस कोड की पंक्तियों की गिनती भी आपको जटिलता का विचार दे सकती है। कोड की अधिक पंक्तियों का मतलब है कि एक मॉड्यूल में पढ़ने और समझने के लिए अधिक है। मैं इसे स्टैंड-अलोन माप के रूप में उपयोग करने में संकोच करूंगा। इसके बजाय, मैं इसे अन्य मापों के साथ उपयोग करूँगा, जैसे कि किसी दिए गए मॉड्यूल में दोष घनत्व की संख्या प्राप्त करने के लिए। एक उच्च दोष घनत्व परीक्षण की समीक्षा लिखने और कोड समीक्षा करने में समस्याओं का संकेत दे सकता है, जो जटिल कोड के कारण हो सकता है या नहीं हो सकता है।
फैन-इन और फैन-आउट दो अन्य मैट्रिक्स हैं, जो डेटा के प्रवाह से संबंधित हैं। जैसा कि यहां परिभाषित किया गया है , फैन इन प्रक्रियाओं का योग है, जिसे मापदंडों को पढ़ा जाता है, और वैश्विक चर पढ़े जाते हैं और फैन आउट उन प्रक्रियाओं का योग है जो किसी दिए गए प्रक्रिया को कॉल करते हैं, मापदंडों को लिखा जाता है (बाहरी उपयोगकर्ताओं के संपर्क में, संदर्भ द्वारा पारित), और वैश्विक चरों को लिखा गया है। फिर से, उच्च प्रशंसक और प्रशंसक-आउट एक मॉड्यूल का संकेत हो सकता है जिसे समझना मुश्किल हो सकता है।
विशिष्ट प्रतिमानों में, अन्य उपाय या मैट्रिक्स हो सकते हैं जो उपयोगी भी हैं। उदाहरण के लिए, वस्तु-उन्मुख दुनिया में, निगरानी युग्मन (इच्छा कम), सामंजस्य (इच्छा उच्च), और वंशानुक्रम की गहराई (इच्छा कम) का उपयोग यह आकलन करने के लिए किया जा सकता है कि प्रणाली कितनी सरल या जटिल है।
बेशक, यह महसूस करना महत्वपूर्ण है कि बहुत सारे उपाय और मैट्रिक्स बस संकेतक हैं। आपको यह निर्धारित करने के लिए अपने निर्णय का उपयोग करने की आवश्यकता है कि क्या सादगी को बढ़ाने के लिए रिफ्लेक्टर करना आवश्यक है या यदि ऐसा करने के प्रयास के लायक नहीं है। आप माप कर सकते हैं, मैट्रिक्स की गणना कर सकते हैं और अपने कोड के बारे में जान सकते हैं, लेकिन आप अपने सिस्टम को संख्याओं द्वारा डिज़ाइन नहीं करना चाहते हैं। अंतत: वही करें जो मायने रखता है।