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