લેગસી કોડ સમય જતાં વધુ ખરાબ બને છે
લેગસી કોડ સમય જતાં સુધરતો નથી. તે વધુ ખરાબ થતો જાય છે.
ગયા અઠવાડિયે, મેં એક બગ (bug) સુધારવામાં ત્રણ કલાક વિતાવ્યા. તે માત્ર 20 મિનિટમાં થઈ જવું જોઈતું હતું. સમસ્યા 2019નું એક વેલિડેશન મોડ્યુલ (validation module) હતી. દરેક જણ તેને અવગણતા હતા કારણ કે "તે કામ કરે છે." પણ તે કામ કરતું નહોતું. મને ફાઇલની અંદર 2020નો એક TODO કોમેન્ટ મળ્યો.
ઘણા લોકો લેગસી કોડને વૈકલ્પિક દેવા (optional debt) તરીકે જુએ છે. તેઓ વિચારે છે કે જ્યારે તેમની પાસે સમય હશે ત્યારે તેઓ તેને ચૂકવી દેશે. લેગસી કોડ ફૂગ (mold) જેવો છે. તે ફેલાય છે. તે તમારા સિસ્ટમના અન્ય ભાગોને પણ દૂષિત કરે છે. તમે તેને જેટલો લાંબો સમય અવગણશો, તેને સાફ કરવાનો ખર્ચ તેટલો જ વધતો જશે.
આ એક ખરાબ ચક્ર બનાવે છે:
- તમે એક અસ્તવ્યસ્ત પ્રોજેક્ટ વારસામાં મેળવો છો.
- તમારી ફીચરને ચલાવવા માટે તમે વધુ એક
ifસ્ટેટમેન્ટ ઉમેરો છો. - છ મહિના પછી, બીજું કોઈ પણ આવું જ કરે છે.
- એક વર્ષ પછી, તે ફાઇલમાં 800 લાઇન હોય છે અને શૂન્ય ટેસ્ટ હોય છે.
આ "કામ કરતા" કોડના છુપાયેલા ખર્ચ છે:
- ડેવલપમેન્ટની ઝડપ ઘટે છે. તમે કોડ લખવા કરતાં સંદર્ભ (context) વાંચવામાં વધુ સમય વિતાવો છો.
- બગ્સ (bugs) વધે છે. એક વસ્તુ સુધારવાથી બીજી વસ્તુ બગડી જાય છે.
- ઓનબોર્ડિંગ (onboarding) મુશ્કેલ બને છે. નવા ડેવલપર્સને એ સમજવામાં મુશ્કેલી પડે છે કે લોજિક દરેક જગ્યાએ કેમ ડુપ્લીકેટ છે.
આ લાલ નિશાનીઓ (red flags) પર ધ્યાન આપો:
- નકામી અથવા ખોટી માહિતી આપતી કોમેન્ટ્સ.
- અલગ-અલગ ફાઇલોમાં ડુપ્લીકેટ બિઝનેસ લોજિક.
- સર્ક્યુલર ડિપેન્ડન્સી (circular dependencies) અને હાઈ કપલિંગ (high coupling).
બધું જ ફરીથી લખવાનો પ્રયાસ કરશો નહીં. સંપૂર્ણ રીરાઈટ (full rewrites) 80% કિસ્સામાં નિષ્ફળ જાય છે. જ્યારે બિઝનેસ નવી ફીચર્સની રાહ જોતો હોય, ત્યારે તમે જે પહેલેથી અસ્તિત્વમાં છે તેને ફરીથી બનાવવા માટે મહિનાઓ વિતાવી દો છો.
કેરેક્ટરાઇઝેશન ટેસ્ટ (characterization tests) સાથે ઇન્ક્રીમેન્ટલ રિફેક્ટરિંગ (incremental refactoring) નો ઉપયોગ કરો:
- વર્તમાન વર્તણૂકને ટેસ્ટ દ્વારા કેપ્ચર કરો, ભલે તે વિચિત્ર હોય.
- તે વર્તણૂક બદલ્યા વિના રિફેક્ટર કરો.
- જ્યાં સુધી કોડ વાંચી શકાય તેટલો ન થાય ત્યાં સુધી આ પ્રક્રિયાનું પુનરાવર્તન કરો.
- ત્યાર પછી જ સાચા ટેસ્ટ સાથે વર્તણૂક બદલો.
જાળમાં ફસાવાથી બચવા માટે આ નિયમોનું પાલન કરો:
- ટેસ્ટ વગર ક્યારેય રિફેક્ટર કરશો નહીં.
- રિફેક્ટિંગ દરમિયાન વર્તણૂક બદલશો નહીં. એક બગ એ અનડૉક્યુમેન્ટેડ ફીચર હોઈ શકે છે જેના પર ક્લાયન્ટ નિર્ભર હોય.
- શાંત કોડને એમ જ રહેવા દો. જો કોઈ મોડ્યુલમાં ત્રણ વર્ષથી કોઈ ફેરફાર થયો નથી અને તે કોઈ સમસ્યા પેદા કરતું નથી, તો તેને એમ જ રહેવા દો.
તમારી ઉર્જા તે કોડ પર કેન્દ્રિત કરો જેને તમે વારંવાર ઉપયોગમાં લો છો.
સ્ત્રોત: https://dev.to/taina_costa_f/legacy-code-nao-envelhece-como-vinho-quanto-mais-espera-pior-fica-132h
