कोड पुन: दर्शन से कैसे निपटें?


10

मैं एक नई परियोजना शुरू करते समय कोड पुन: उपयोग के बारे में सोचता हूं।

मुझे किस हद तक अपने कोड को पुन: प्रयोज्य बनाना चाहिए?
क्या मुझे इसे आवेदन के दायरे में सीमित करना चाहिए या क्या मुझे इसे परियोजना के बाहर पुन: प्रयोज्य बनाना चाहिए?

कभी-कभी, मुझे लगता है कि कोड पुन: प्रयोज्य एक साधारण डिजाइन के रास्ते में खड़ा हो सकता है। कृपया, अपनी स्वयं की समझ और कोड पुनः प्रयोज्य के दृष्टिकोण को साझा करें।


जवाबों:


21

पुन: उपयोग किए जाने से पहले कोड को काम करना होगा। ताकि डिजाइन का अर्थ है और (प्राथमिक) फ़ंक्शन कोड के पुन: उपयोग के विचार से पहले आना चाहिए।

पुन: उपयोग की सोच होना अच्छा है, और आपके द्वारा पहले से लिखे गए घटकों का पुन: उपयोग करना। लेकिन यह कभी-कभी उतनी ही तेजी से हो सकता है, अगर तेजी से नहीं, बस कोड लिखने और इसे काम करने के लिए। आपके द्वारा मूल समस्या हल करने के बाद, आप इसे अधिक पुन: प्रयोज्य बनाने के लिए कोड को रिफलेक्टर कर सकते हैं।


2
"पहले वाक्य में" था "एक टाइपो था"?

@ डायलेन - क्या "था"? :-) कि पकड़ने के लिए धन्यवाद।

9

चुंबन और YAGNI याद रखें:

re-usability better to be consideredएक बार कोड तैयार करने के बाद आप अपना डिज़ाइन डॉक्यूमेंट तैयार करें । यह आपको कोड / अनुभाग के उन हिस्सों को देखने की अनुमति देगा जो संभावित रूप से डुप्लिकेट होने जा रहे हैं।

इस प्रकार, यदि आप खुले डिजाइन की जरूरत नहीं है तो लागू KISS और YAGNI अपने काम में दृष्टिकोण!


1

यह मेरे अनुभव से है, लेकिन फिर भी विश्वास है कि इसे लागू किया जा सकता है और ग्लेनह 7 ने जो उल्लेख किया है उसकी तर्ज पर जाता है ।

मैं विभिन्न परियोजनाओं को करने वाली 3 कंपनियों के बीच काम करता हूं। कंपनियां कुछ मानक प्रथाओं और कार्य पद्धति के साथ एक-दूसरे की बहन हैं , लेकिन कई मायनों में अद्वितीय भी हैं। इसके साथ ही कहा, मैं आमतौर पर प्रत्येक परियोजना को नए सिरे से शुरू करता हूं और इसे पूरा करना चाहता हूं या प्रगति दिखाना चाहता हूं। अगर मैं एक ऐसे परिदृश्य में भागता हूं, जहां मुझे एक कोड या कार्यक्षमता का एक टुकड़ा याद है, जो मैंने पिछले प्रोजेक्ट के लिए लिखा था, तो मैं दो चीजों में से एक (समय पर निर्भर) करूंगा:

  1. सबसे तेज़ विधि
    अन्य कोड से पिछले कोड की प्रतिलिपि बनाएँ (मेरे पास बहुत समय नहीं है) मेरी वर्तमान परियोजना के लिए।
  2. दूसरा-सबसे तेज़ तरीका
    पिछले कोड को कॉपी करें और इसे एक सामान्य लाइब्रेरी में रखें, फिर उस लाइब्रेरी को वर्तमान प्रोजेक्ट में शामिल करें (चलती आसान बनाने के लिए)।

    2 बी। अगर मैं दूसरे (मूल) प्रोजेक्ट में बदलाव करता हूं, तो मैं इसे नई लाइब्रेरी [लेकिन आम तौर पर ऐसा नहीं करूंगा जब तक कि मुझे उस प्रोजेक्ट को दोबारा न छूना पड़े]।

बस चेतावनी दी है, आम पुस्तकालयों से बाहर बिल्ली का परीक्षण करें। आम पुस्तकालयों का मतलब निर्भरता पैदा करना है। निर्भरताएँ विफलता के बिंदु बनाती हैं। हालाँकि, आपको अपने वर्तमान कार्यान्वयन के लिए कुछ नया करने की आवश्यकता हो सकती है, लेकिन आप यह नहीं जानते कि यह उस लाइब्रेरी का उपयोग करके किसी और चीज़ को कैसे बदलेगा।


जब आप चार या पांच हो सकते हैं तो एक समान कार्यान्वयन का उपयोग क्यों करें? आपकी "सबसे तेज़" विधि केवल बहुत निकट अवधि में सबसे तेज़ है।
कालेब

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

1

कभी-कभी मुझे लगता है कि कोड की कुछ पंक्तियों को कॉपी और पेस्ट करना एक बेहतर समाधान है। मानव भाषा में भी, जब आप एक वाक्य कहना चाहते हैं, जो आपने पहले थोड़े बदलाव के साथ कहा था, तो आप इसे भिन्नता के साथ दोहराएंगे, क्योंकि यह किसी के लिए कम परेशानी पैदा करता है।

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


0

इसे ज़्यादा मत करो। और अगर आपको यकीन नहीं हो रहा है, तब तक एप्लिकेशन स्कोप पर टिके रहें, जब तक कि आप यह देखने के लिए पर्याप्त प्रोजेक्ट न लिख लें कि आप कहां पुन: उपयोग कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.