આપણે ક્યારે રિફેક્ટર (Refactor) કરવું અને ક્યારે ફરીથી લખવું (Rewrite) તે કેવી રીતે નક્કી કરીએ છીએ
દરેક ડેવલપર આ ક્ષણનો સામનો કરે છે.
કોડબેઝ ધીમો છે. નવા ફીચર્સ ઉમેરવામાં ઘણો સમય લાગે છે. નવા જોડાયેલા કર્મચારીઓને સિસ્ટમ સમજવામાં મુશ્કેલી પડે છે. અંતે કોઈ પૂરેપૂરું ફરીથી લખવાનો (full rewrite) સૂચન કરે છે.
ટીમ સામાન્ય રીતે બે જૂથોમાં વહેંચાઈ જાય છે. એક જૂથ નવેસરથી શરૂઆત કરવા માંગે છે. બીજું જૂથ ભૂતકાળના રિરાઈટના નિષ્ફળતાથી ડરે છે. બંને પક્ષો પાસે યોગ્ય મુદ્દાઓ છે.
રિરાઈટ એ કોઈ જાદુઈ ઉકેલ નથી. તેમાં ઘણીવાર આયોજન કરતા વધુ સમય લાગે છે. તમારે એકસાથે બે સિસ્ટમ્સ જાળવવી પડે છે. તમે નવા વર્ઝનમાં પણ એ જ ભૂલોનું પુનરાવર્તન કરી શકો છો.
આ ચોક્કસ કિસ્સાઓમાં રિરાઈટ કરવું યોગ્ય છે:
• ડેટા મોડલ વ્યવસાય માટે મૂળભૂત રીતે ખોટું છે. • ટેકનોલોજી જૂની થઈ ગઈ છે અને તેમાં કોઈ સિક્યુરિટી અપડેટ્સ મળતા નથી. • વ્યવસાયની જરૂરિયાતો એટલી બદલાઈ ગઈ છે કે મૂળ સિસ્ટમ હવે બિનઉપયોગી બની ગઈ છે. • વર્તમાન ટીમમાં કોઈને ખબર નથી કે સિસ્ટમ કેવી રીતે કામ કરે છે.
તેમ છતાં, એકસાથે બધું બદલી નાખશો નહીં (big bang replacement). 'Strangler fig pattern' નો ઉપયોગ કરો. જૂની સિસ્ટમની સાથે સાથે નવી સિસ્ટમને ટુકડે-ટુકડે બનાવો.
મોટાભાગના કિસ્સાઓમાં, તમારે ખરેખર રિફેક્ટરિંગની જરૂર હોય છે.
રિફેક્ટરિંગ એ ત્યારે યોગ્ય પસંદગી છે જ્યારે:
• તમે હજુ પણ ફીચર્સ ઉમેરી શકો છો, ભલે તે ધીમું હોય. • ટીમ વર્તમાન કોડ સમજે છે. • સમસ્યા (mess) ચોક્કસ મોડ્યુલ્સ પૂરતી મર્યાદિત છે. • વ્યવસાય નવા ફીચર્સ આપવાનું બંધ કરી શકતો નથી.
તમે પસંદગી કરો તે પહેલાં, પૂછો કે કોડ ખરાબ કેમ બન્યો.
જો સમસ્યા ટેકનિકલ ડેબ્ટ (technical debt) હોય, તો સૌથી ખરાબ ભાગોનું રિફેક્ટરિંગ કરો. જો સમસ્યા કોડ રિવ્યુનો અભાવ અથવા નબળી સંસ્કૃતિ હોય, તો રિરાઈટ મદદરૂપ થશે નહીં. તમે ફક્ત જૂની આદતો સાથે નવો કચરો (mess) જ બનાવશો.
નિર્ણય લેતા પહેલા આ પ્રશ્નો પૂછો:
• શું આપણે સૌથી ખરાબ ભાગોને અલગથી સુધારી શકીએ છીએ? • શું ડેટા મોડલ વર્તમાન વ્યવસાયિક જરૂરિયાતો માટે અયોગ્ય છે? • જો આપણે ફરીથી શરૂઆત કરીશું તો આપણે કયું જ્ઞાન ગુમાવીશું? • શું વ્યવસાય લાંબા સંક્રમણ (transition) ને હેન્ડલ કરવા માટે સ્થિર છે?
ફરીથી શરૂ કરવું સારું લાગે છે. પરંતુ રિરાઈટ પૂર્ણ કરવું એ અઘરો ભાગ છે. મોટાભાગના કિસ્સાઓમાં, એક વ્યવસ્થિત રિફેક્ટરિંગ પ્લાન વધુ સુરક્ષિત અને અસરકારક હોય છે.
સ્ત્રોત: https://dev.to/daviefano/how-we-decide-when-to-refactor-and-when-to-rewrite-40pk