𝗛𝗼𝘄 𝗪𝗲 𝗗𝗲𝗰𝗶𝗱𝗲 𝗪𝗵𝗲𝗻 𝘁𝗼 𝗥𝗲𝗳𝗮𝗰𝘁𝗼𝗿 𝗮𝗻𝗱 𝗪𝗵𝗲𝗻 𝘁𝗼 𝗥𝗲𝘄𝗿𝗶𝘁𝗲
ప్రతి డెవలపర్ ఈ పరిస్థితిని ఎదుర్కొంటారు.
కోడ్బేస్ (Codebase) నెమ్మదిగా ఉంది. కొత్త ఫీచర్లను జోడించడానికి చాలా సమయం పడుతుంది. కొత్తగా చేరిన వారు సిస్టమ్ను అర్థం చేసుకోవడానికి ఇబ్బంది పడుతున్నారు. చివరకు ఎవరో ఒకరు పూర్తి రీరైట్ (Rewrite) చేయాలని సూచిస్తారు.
బృందం సాధారణంగా రెండు వర్గాలుగా విడిపోతుంది. ఒక వర్గం కొత్తగా ప్రారంభించాలని కోరుకుంటుంది. మరొక వర్గం గతంలో జరిగిన రీరైట్ల వైఫల్యాలను చూసి భయపడుతుంది. రెండు వైపులా సరైన కారణాలు ఉన్నాయి.
రీరైట్ అనేది మ్యాజిక్ పరిష్కారం కాదు. ఇది తరచుగా అనుకున్న దానికంటే ఎక్కువ సమయం తీసుకుంటుంది. మీరు ఒకేసారి రెండు సిస్టమ్లను నిర్వహించాల్సి వస్తుంది. కొత్త వెర్షన్లో కూడా మీరు పాత తప్పులనే మళ్ళీ చేసే అవకాశం ఉంది.
ఈ నిర్దిష్ట సందర్భాలలో రీరైట్ చేయడం సమంజసంగా ఉంటుంది:
• డేటా మోడల్ (Data model) వ్యాపారానికి ప్రాథమికంగా తప్పుగా ఉంది. • సాంకేతికత (Technology) కాలం చెల్లింది మరియు దానికి సెక్యూరిటీ అప్డేట్లు లేవు. • వ్యాపార అవసరాలు ఎంతగా మారిపోయాయంటే, అసలు సిస్టమ్ పనికిరాకుండా పోయింది. • ప్రస్తుత బృందంలో ఎవరికీ సిస్టమ్ ఎలా పనిచేస్తుందో తెలియదు.
అలాంటప్పుడు కూడా, ఒకేసారి మొత్తం మార్చేయకండి (big bang replacement). 'Strangler fig pattern' ఉపయోగించండి. పాత సిస్టమ్తో పాటే కొత్త సిస్టమ్ను భాగాలుగా నిర్మించండి.
చాలా సందర్భాలలో, మీకు నిజంగా అవసరమయ్యేది రీఫ్యాక్టరింగ్ (Refactoring) మాత్రమే.
ఈ క్రింది సందర్భాలలో రీఫ్యాక్టరింగ్ సరైన ఎంపిక:
• నెమ్మదిగా ఉన్నప్పటికీ, మీరు ఇంకా ఫీచర్లను జోడించగలరు. • బృందానికి ప్రస్తుత కోడ్ అర్థమవుతుంది. • సమస్య కేవలం కొన్ని నిర్దిష్ట మాడ్యూల్స్కే (modules) పరిమితమై ఉంది. • వ్యాపారం కొత్త ఫీచర్లను విడుదల చేయడాన్ని ఆపలేదు.
మీరు నిర్ణయం తీసుకునే ముందు, కోడ్ ఎందుకు పాడైపోయిందో ప్రశ్నించుకోండి.
సమస్య టెక్నికల్ డెట్ (technical debt) అయితే, అత్యంత అధ్వాన్నమైన భాగాలను రీఫ్యాక్టర్ చేయండి. సమస్య కోడ్ రివ్యూల (code reviews) కొరత లేదా పేలవమైన సంస్కృతి (culture) అయితే, రీరైట్ చేయడం వల్ల ఉపయోగం ఉండదు. మీరు పాత అలవాట్లతోనే కొత్త గందరగోళాన్ని సృష్టిస్తారు.
మీరు నిర్ణయించుకునే ముందు ఈ ప్రశ్నలు వేసుకోండి:
• మనం అత్యంత అధ్వాన్నమైన భాగాలను విడిగా సరిచేయగలమా? • ప్రస్తుత వ్యాపార అవసరాలకు డేటా మోడల్ సరిపోవడం లేదా? • మనం మళ్ళీ మొదటి నుండి ప్రారంభిస్తే ఏ జ్ఞానాన్ని (knowledge) కోల్పోతాము? • సుదీర్ఘమైన మార్పు ప్రక్రియను (transition) తట్టుకునే స్థిరత్వం వ్యాపారానికి ఉందా?
మళ్ళీ మొదటి నుండి ప్రారంభించడం బాగుంటుంది. కానీ రీరైట్ను పూర్తి చేయడం కష్టమైన పని. చాలా సందర్భాలలో, ఒక క్రమబద్ధమైన రీఫ్యాక్టరింగ్ ప్లాన్ సురక్షితమైనది మరియు మరింత ప్రభావవంతమైనది.
Source: https://dev.to/daviefano/how-we-decide-when-to-refactor-and-when-to-rewrite-40pk