Legacy Code वयानुसार अधिक खराब होत जातो
Legacy code काळानुसार सुधारत नाही. तो अधिक खराब होत जातो.
गेल्या आठवड्यात, मी एक बग (bug) फिक्स करण्यासाठी तीन तास खर्च केले. त्यासाठी फक्त २० मिनिटे लागायला हवी होती. समस्या २०१९ मधील एका validation module ची होती. "ते काम करत आहे" म्हणून सर्वांनी त्याकडे दुर्लक्ष केले होते. पण ते काम करत नव्हते. मला त्या फाईलमध्ये २०२० चा एक TODO कमेंट सापडला.
अनेक लोक legacy code कडे एक ऐच्छिक कर्ज (optional debt) म्हणून पाहतात. त्यांना वाटते की जेव्हा वेळ मिळेल तेव्हा ते फेडता येईल. पण legacy code हे बुरशीसारखे असते. ते पसरते. ते तुमच्या सिस्टमच्या इतर भागांना दूषित करते. तुम्ही जितके जास्त काळ त्याकडे दुर्लक्ष कराल, तितके ते स्वच्छ करणे महाग पडेल.
यामुळे एक वाईट चक्र तयार होते:
- तुम्हाला एक विस्कळीत प्रोजेक्ट वारसा म्हणून मिळतो.
- तुमचे फीचर चालवण्यासाठी तुम्ही त्यात आणखी एक
if statementजोडता. - सहा महिन्यांनंतर, दुसरे कोणीतरी तेच करते.
- एक वर्षानंतर, त्या फाईलमध्ये ८०० ओळी असतात आणि एकही टेस्ट नसते.
या "काम करणाऱ्या" कोडचे काही छुपे खर्च आहेत:
- डेव्हलपमेंटचा वेग कमी होतो. कोड लिहिण्यापेक्षा संदर्भ (context) वाचण्यात तुमचा जास्त वेळ जातो.
- बग्स वाढतात. एक गोष्ट सुधारताना दुसरी गोष्ट बिघडते.
- ऑनबोर्डिंग कठीण होते. लॉजिक सर्वत्र का डुप्लिकेट आहे हे समजून घेण्यासाठी नवीन डेव्हलपर्सना संघर्ष करावा लागतो.
या धोक्याच्या खुणांकडे (red flags) लक्ष द्या:
- निरुपयोगी किंवा चुकीची माहिती देणाऱ्या कमेंट्स.
- वेगवेगळ्या फाईल्समध्ये डुप्लिकेट बिझनेस लॉजिक.
- सर्कुलर डिपेंडन्सी (circular dependencies) आणि हाय कपलिंग (high coupling).
सर्व काही पुन्हा लिहिण्याचा (rewrite) प्रयत्न करू नका. पूर्णपणे रिराईट करणे ८०% वेळा अपयशी ठरते. व्यवसाय नवीन फीचर्सची वाट पाहत असताना, तुम्ही आधीच अस्तित्वात असलेल्या गोष्टी पुन्हा तयार करण्यात महिने घालवता.
Characterization tests सह क्रमिक रिफॅक्टरिंग (incremental refactoring) वापरा:
- सध्याचे वर्तन (behavior) टेस्ट्सद्वारे टिपून घ्या, मग ते कितीही विचित्र का असेना.
- ते वर्तन न बदलता रिफॅक्टर करा.
- कोड वाचनीय होईपर्यंत ही प्रक्रिया पुन्हा करा.
- त्यानंतरच खऱ्या टेस्ट्ससह वर्तन बदला.
सापळ्यातून वाचण्यासाठी या नियमांचे पालन करा:
- टेस्ट्सशिवाय कधीही रिफॅक्टर करू नका.
- रिफॅक्टरिंग दरम्यान वर्तन बदलू नका. एखादा बग हे क्लायंट अवलंबून असलेले एखादे अनोंदणीकृत (undocumented) फीचर असू शकते.
- शांत कोडला तसाच राहू द्या. जर एखादे मॉड्यूल तीन वर्षांपासून बदलले नसेल आणि त्यामुळे कोणतीही समस्या येत नसेल, तर त्यात हस्तक्षेप करू नका.
तुमची ऊर्जा त्या कोडवर केंद्रित करा ज्यामध्ये तुम्ही वारंवार बदल करता.
स्रोत: https://dev.to/taina_costa_f/legacy-code-nao-envelhece-como-vinho-quanto-mais-espera-pior-fica-132h
