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