2011-03-03 13 views
9

एक सामान्य नियम के रूप में, मैं कन्स्ट्रक्टर-आधारित निर्भरता इंजेक्शन का उपयोग करना चाहता हूं, लेकिन हाल ही में मैं एक कक्षा पर काम कर रहा था जो 4 अन्य वर्गों पर निर्भर था। चूंकि लंबी तर्क सूचियां पढ़ने में मुश्किल होती हैं, इसलिए मैंने 4-एन्टर कन्स्ट्रक्टर को 4 सेटर्स के साथ बदल दिया।एक कोड गंध "बहुत अधिक निर्भरता" है?

जब मैंने एक सहयोगी को इसका उल्लेख किया, तो उसने तर्क दिया कि यह स्वयं कोड गंध है। उन्होंने सुझाव दिया कि मैं इस वर्ग को "तोड़ दूंगा"।

कक्षा स्वयं अपेक्षाकृत कम है; यह काम के बड़े हिस्से को करने के लिए कई सहयोगियों का उपयोग करना होता है। इसमें एक छोटी (~ 12 लाइनें, व्हाइटस्पेस समेत) विधि होती है जो 4 सहयोगियों को कॉल करती है। क्या आप इस बात से सहमत हैं या असहमत हैं कि यह एक कोड गंध है? क्या कोई उद्देश्य उपाय है जिसका उपयोग मैं यह निर्धारित करने के लिए कर सकता हूं कि कितनी निर्भरता "बहुत अधिक" है? यह चक्रीय जटिलता, एकजुटता, युग्मन इत्यादि जैसे मीट्रिक से कैसे संबंधित है?

उत्तर

3

आपके प्रश्न के संदर्भ में, जैसा कि आपने इसे phrased किया है, हां यह है। लेकिन यह थोड़ा और जटिल है, यदि आप 6 महीने के बाद इस कोड पर आते हैं, तो क्या आप कोड पढ़ने के पहले 2-3 मिनट में इसे ग्रोक कर सकते हैं? क्या आपको इसे समझने के लिए कोडबेस के अन्य हिस्सों को देखने की आवश्यकता है? सहयोगियों को संशोधित करने के लिए इस वर्ग को संशोधित करने की आवश्यकता होगी? क्या आप इस कक्षा को दूसरे इंजीनियर (विशेष रूप से नए इंजीनियरों) को 2-4 वाक्यों में समझा सकते हैं? यह निर्णय लेने में ये सभी मदद।

जिस बिंदु को मैं बनाने की कोशिश कर रहा हूं वह यह है कि यहां पर अंतरंगताएं हैं जिन्हें निर्णय लेने से पहले भी विचार किया जाना चाहिए। यह अनुभव का विषय है, और सीखने के लिए सीखना कब नियमों पर आम तौर पर सहमत है, महत्वपूर्ण है।

संबंधित मुद्दे