मैं निम्न विधि है cyclomatic जटिलता को कम करना:एक जावा विधि
private void setClientAdditionalInfo(Map map, Client client, User user) {
Map additionalInfo = (Map) map.get("additionalInfo");
if (checkMapProperty(additionalInfo, "gender")) {
client.setGender(additionalInfo.get("gender").toString());
}
if (checkMapProperty(additionalInfo, "race")) {
client.setRace(additionalInfo.get("race").toString());
}
if (checkMapProperty(additionalInfo, "ethnicity")) {
client.setEthnicity(additionalInfo.get("ethnicity").toString());
}
.....
12 अधिक अगर बयान समान तरीके से किया जाता है। एकमात्र अंतर एक अलग सेटर विधि नाम और एक अलग पैरामीटर है। अब, जैसा कि एक ही पैटर्न बार-बार दोहराया जाता है, क्या कोड जटिलता को कम करने का कोई तरीका है?
आप मानचित्र {{"दौड़": क्लाइंट :: सेटरेस, ...} 'बना सकते हैं या स्ट्रिंग्स की सूची के लिए उचित सेटर ढूंढने के लिए प्रतिबिंब का उपयोग कर सकते हैं। सुनिश्चित नहीं है कि यह जटिलता को कम करेगा, लेकिन यह नकल को कम कर सकता है। मुझे लगता है कि मैं इसे इस तरह से रखूंगा।सोचने के लिए बेहतर "यह 15 बार क्यों दोहराया जाता है?" सोचने के बजाय "यह कोड क्या बिल्ली है?" –
एक प्रश्न जो पूछने लायक हो सकता है: मानचित्र में आपकी जानकारी क्यों है? क्या आप अपनी जानकारी पहले 'क्लाइंट' में संग्रहीत नहीं कर सकते थे? अक्सर जवाब "नहीं" होता है और आपको बुलेट काटने की ज़रूरत होती है लेकिन कभी-कभी आप नक्शे से ऑब्जेक्ट्स को पूरी तरह से पॉप्युलेट करने से बच सकते हैं। – biziclop
क्या आपका मतलब है "चक्रवात जटिलता" या "कोड की कम लाइनें?" एन चीजों पर लूप के लिए चक्रवात जटिलता में 2^एन जोड़ सकते हैं, भले ही यह बेहतर लगे। साइक्लोमैटिक जटिलता को न बदलने वाले कोड को बेहतर बनाने के लिए आपको बहुत सारे जवाब मिल रहे हैं। – djechlin