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