𝗛𝗼𝘄 𝗪𝗲 𝗗𝗲𝗰𝗶𝗱𝗲 𝗪𝗵𝗲𝗻 𝘁𝗼 𝗥𝗲𝗳𝗮𝗰𝘁𝗼𝗿 𝗮𝗻𝗱 𝗪𝗵𝗲𝗻 𝘁𝗼 𝗥𝗲𝘄𝗿𝗶𝘁𝗲
प्रत्येक डेव्हलपरला या क्षणाचा सामना करावा लागतो.
कोडबेस संथ आहे. नवीन फीचर्स जोडायला खूप वेळ लागतो. नवीन कर्मचारी सिस्टम समजून घेण्यासाठी संघर्ष करतात. शेवटी कोणीतरी पूर्णपणे पुन्हा लिहिण्याचा (full rewrite) सल्ला देते.
टीम सहसा दोन गटांमध्ये विभागली जाते. एक गट नव्याने सुरुवात करू इच्छितो. दुसरा गट पूर्वीच्या 'रीराइट्स'च्या (rewrites) अपयशाची भीती बाळगतो. दोन्ही बाजूंचे मुद्दे रास्त आहेत.
'रीराइट' (Rewrite) हा कोणताही जादूचा उपाय नाही. यासाठी नियोजित वेळेपेक्षा जास्त वेळ लागू शकतो. तुम्हाला एकाच वेळी दोन सिस्टम्स सांभाळाव्या लागतात. तुम्ही नवीन व्हर्जनमध्ये देखील तीच जुनी चुका पुन्हा करू शकता.
खालील विशिष्ट प्रकरणांमध्ये 'रीराइट' करणे योग्य ठरते:
• डेटा मॉडेल व्यवसायासाठी मूलभूतपणे चुकीचे आहे. • तंत्रज्ञान कालबाह्य झाले आहे आणि त्यात कोणतेही सुरक्षा अपडेट्स मिळत नाहीत. • व्यवसायाची गरजा इतक्या बदलल्या आहेत की मूळ सिस्टम आता निरुपयोगी झाली आहे. • सध्याच्या टीममधील कोणालाही सिस्टम कशी काम करते हे समजत नाही.
तरीही, एकदम सर्व काही बदलण्याचा (big bang replacement) प्रयत्न करू नका. 'strangler fig pattern' वापरा. जुन्या सिस्टमसोबतच नवीन सिस्टम तुकड्या-तुकड्याने तयार करा.
बहुतेक वेळा, तुम्हाला प्रत्यक्षात रिफॅक्टरिंगची (refactoring) गरज असते.
रिफॅक्टरिंग हा योग्य पर्याय आहे जेव्हा:
• जरी संथ असले तरी तुम्ही अजूनही फीचर्स जोडू शकता. • टीमला सध्याचा कोड समजतो. • गोंधळ किंवा समस्या विशिष्ट मॉड्यूल्सपुरती मर्यादित आहे. • व्यवसाय नवीन फीचर्स देणे थांबवू शकत नाही.
निवड करण्यापूर्वी, कोड खराब का झाला हे विचारा.
जर समस्या 'technical debt' असेल, तर सर्वात खराब भाग रिफॅक्टर करा. जर समस्या कोड रिव्ह्यूचा अभाव किंवा खराब संस्कृती असेल, तर 'रीराइट' केल्याने काहीही फायदा होणार नाही. तुम्ही फक्त त्याच जुन्या सवयींसह नवीन गोंधळ निर्माण कराल.
निर्णय घेण्यापूर्वी हे प्रश्न विचारा:
• आपण सर्वात खराब भाग स्वतंत्रपणे दुरुस्त करू शकतो का? • सध्याच्या व्यवसायाच्या गरजांसाठी डेटा मॉडेलमध्ये त्रुटी आहेत का? • जर आपण नव्याने सुरुवात केली, तर आपण कोणते ज्ञान गमावू? • दीर्घकालीन बदलाचा (transition) काळ हाताळण्यासाठी व्यवसायाकडे स्थिरता आहे का?
नव्याने सुरुवात करणे चांगले वाटते. पण 'रीराइट' पूर्ण करणे हा कठीण भाग आहे. बहुतेक वेळा, एक संरचित रिफॅक्टरिंग प्लॅन (structured refactoring plan) अधिक सुरक्षित आणि प्रभावी असतो.
स्रोत: https://dev.to/daviefano/how-we-decide-when-to-refactor-and-when-to-rewrite-40pk