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