आप DRY नहीं करते हैं क्योंकि किसी ने इसे एक किताब में कहीं लिखा है कि यह करना अच्छा है, आप DRY करते हैं क्योंकि यह वास्तव में मूर्त लाभ है।
विशेष रूप से उस प्रश्न से:
यदि आप खुद को दोहराते हैं, तो आप स्थिरता बनाए रख सकते हैं। यदि doStuff1-3 में सभी समान रूप से संरचित कोड होते हैं और आप एक समस्या को ठीक करते हैं, तो आप अन्य स्थानों पर समस्या को ठीक करने के लिए आसानी से भूल सकते हैं। इसके अलावा, यदि आपको संभाल करने के लिए एक नया मामला जोड़ना है, तो आप सभी स्थानों पर कॉपी-पेस्ट करने के बजाय बस एक फ़ंक्शन में विभिन्न मापदंडों को पारित कर सकते हैं।
हालाँकि, DRY को अक्सर चतुर प्रोग्रामर द्वारा चरम पर ले जाया जाता है। कभी-कभी अपने आप को नहीं दोहराने के लिए आपको अमूर्तता पैदा करनी पड़ती है ताकि आपके टीम के साथी उनका अनुसरण न कर सकें। कभी-कभी दो चीजों की संरचना केवल अस्पष्ट समान होती है, लेकिन बहुत अलग होती है। यदि doStuff1-4 अलग-अलग हैं, जो उन्हें स्वयं को दोहराने के लिए नहीं करने का कारण बनता है, तो आपको अप्राकृतिक कोड लिखना होगा या चतुर कोडिंग बैकफ़्लिप से गुजरना होगा, जिससे आपकी टीम आपकी तरफ चमक जाएगी, फिर खुद को दोहराना ठीक हो सकता है। मैं खुद को अप्राकृतिक तरीके से एक-दो बार नहीं दोहराने और अंतिम उत्पाद पर पछतावा करने के लिए पीछे की तरफ झुका हूं।
इसलिए, मूल रूप से, "ओह यार, यह कोड बहुत समान है, शायद मुझे नहीं लगता कि मुझे खुद को दोहराना नहीं चाहिए"। सोचें "क्या इस कोड को फिर से उपयोग करने के लिए रीएक्टिंग करने से आम तत्व कोड को अधिक रख - रखाव या कम बनाए रखने योग्य बनाते हैं ?" फिर, वह चुनें जो इसे और अधिक बनाए रखता है।
कहा जा रहा है कि, एसआरपी को देखते हुए और आम तौर पर छोटे, लचीले वर्गों के लिए प्रयास करने से, यह समझ में आ सकता है कि इस कारण से आपके कोड का विश्लेषण करने के लिए , व्यवहार के अलग-अलग बिट्स को तोड़ दें जो सामान्य प्रकार का उपयोग करते हैं (आपने कहा था कि वे टाइप के अलावा अन्य समान हैं) छोटी कक्षाएं। तब आपको पता चलेगा कि इनमें से कुछ कक्षाएं वास्तव में पूरी तरह से समान हैं (न केवल ज्यादातर समान हैं), और फिर आप जो भी उपकरण जोड़ना चाहते हैं, उसमें टूलकिट का निर्माण कर सकते हैं Microsoft.CodeAnalysis.CPlusPlus.Syntax.AttributeSyntax
।