मैं DRY बनाम कोड युग्मन के बारे में मार्गदर्शन की तलाश कर रहा हूं। मुझे अपने कोड की नकल करना पसंद नहीं है और मुझे असंबंधित मॉड्यूल के बीच कोड युग्मन भी पसंद नहीं है। इसलिए मैं डुप्लिकेट कोड को रिफ्लेक्टर करता हूं, अगर मुझे डुप्लिकेट पेश किए जाने के एक साल बाद पहचान योग्य डुप्लिकेट कोड मिल जाता है। हालाँकि, मेरे पास ऐसी अनुभवी परिस्थितियाँ हैं जहाँ वास्तविक दुनिया बहुत अधिक अप्रत्याशित है, और कोड को रीफ़्लैक्ट करने के बाद, ऐसी परिस्थितियाँ उत्पन्न होती हैं जिनके लिए कोड को फिर से बाहर निकालने की आवश्यकता होती है।
उदाहरण के लिए, यदि मेरे पास गैसोलीन कारों, गैसोलीन एसयूवी, इलेक्ट्रिक कारों और इलेक्ट्रिक एसयूवी को संभालने के लिए कोड था, तो मैं कहता हूं कि मैंने "गैसोलीन" पदानुक्रम और "इलेक्ट्रिक" पदानुक्रम में डुप्लिकेट कोड को वापस ले लिया, दोनों "वाहन" पदानुक्रम से उतरते हैं। अब तक सब ठीक है। और फिर, मेरी कंपनी एक हाइब्रिड कार और एक हाइब्रिड सेमी पेश करती है - जो कि मेरे मूल पदानुक्रम में मुख्य बदलावों की आवश्यकता होगी। शायद इसे गैसोलीन और इलेक्ट्रिक पदानुक्रम के बीच "संरचना" की आवश्यकता होगी।
स्पष्ट रूप से कोड दोहराव खराब है क्योंकि यह उपरोक्त सभी उत्पादों के लिए एक बदलाव को लागू करने में लगने वाले समय को बढ़ाता है। लेकिन आम कोड को रिफैक्ट करने से उत्पाद-विशिष्ट विविधताओं को लागू करना उतना ही कठिन हो जाता है, और बहुत सारे "क्लास-जंपिंग" की ओर जाता है जब किसी बग को ठीक करने के लिए कोड की लाइन ढूंढनी पड़ती है - एक उच्च-स्तरीय पैरेंट क्लास में एक बदलाव हो सकता है। सभी वंशजों के बीच ट्रिगर प्रतिगमन कीड़े।
DRY बनाम अवांछित कोड कपलिंग के बीच एक इष्टतम संतुलन कैसे बनता है?