JavaScript:
Omskrivning av kod
Hur man gör:
Låt oss titta på ett enkelt exempel där refaktorisering kan göra din kod mer koncis och läsbar. Här refaktoriserar vi en funktion som beräknar summan av en array med tal.
Före:
function calculateSum(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
console.log(calculateSum([1, 2, 3, 4])); // Utdata: 10
Efter:
function calculateSum(arr) {
return arr.reduce((sum, num) => sum + num, 0);
}
console.log(calculateSum([1, 2, 3, 4])); // Utdata: 10
Ser du hur reduce
-metoden minskar storleken på funktionen samtidigt som funktionaliteten förblir intakt? Det är refaktorisering för dig.
Djupdykning
Refaktorisering dök inte upp som en formell praxis förrän efter publiceringen av Martin Fowlers bok “Refaktorisering: Att förbättra designen på befintlig kod” 1999. Denna bok, tillsammans med uppgången av agil programvaruutveckling, hjälpte till att föra refaktorisering in i huvudströmmen.
Att beskriva refaktorisering som en aspekt av programvaruutveckling är som att förklara varför du skulle städa upp en verkstad: du gör det så att nästa gång du måste fixa något (i detta fall kod), kommer du att spendera mindre tid på att hantera röran och mer på det faktiska problemet.
När vi pratar om alternativ till refaktorisering, beträder vi en bredare diskussion om strategier för programvaruunderhåll. Man kan till exempel välja att göra en fullständig omskrivning, men det är ofta dyrare och riskabelt. Refaktorisera stegvis, och du skördar löpande fördelar utan att sänka skeppet från en plötslig översyn.
Refaktorisering har underlättats av utvecklingen av integrerade utvecklingsmiljöer (IDEs) och verktyg som JSHint, ESLint och Prettier i JavaScript-ekosystemet, som automatiserar kvalitetskontroller av kod och belyser möjligheter för refaktorisering.
Det handlar allt om ren, uttrycksfull och underhållbar kod. Sofistikerade algoritmer, optimering av datastrukturer eller till och med arkitektoniska förändringar som att byta från procedur till funktionella programmeringsstilar kan vara en del av en refaktoreringsprocess.
Refaktorisering måste göras noggrant; det är viktigt att ha en robust uppsättning tester för att säkerställa att dina ändringar inte oväntat har ändrat programmets beteende—ännu en anledning varför Test-driven utveckling (TDD) passar bra ihop med refaktorisering eftersom det ger det säkerhetsnätet som standard.
Se även
Martin Fowlers Refaktoreringsbok: Refaktorisering - Att förbättra designen på befintlig kod
JavaScript-testramverk (för att säkerställa att refaktorisering inte bryter funktionalitet):
Verktyg för Kodkvalitet och Stöd vid Refaktorisering: