TypeScript:
Refactoring
Hoe te:
Beschouw een TypeScript-functie die betere tijden heeft gekend - het is een beetje een rommeltje en kan wat liefde en zorg gebruiken:
function userInfo(data: any): string {
return "User Info: " + data.name + ", " + data.age + ", " + data.email + ";" ;
}
Gerefactord, kan dit er zo uitzien:
interface User {
name: string;
age: number;
email: string;
}
function formatUserInfo(user: User): string {
return `User Info: ${user.name}, ${user.age}, ${user.email};`;
}
Het tweede voorbeeld is robuuster, maakt gebruik van TypeScript’s type systeem met een interface
om potentiële runtimefouten te voorkomen en de leesbaarheid te verbeteren.
Diepgaand
Refactoring is geen modern concept; het evolueerde met programmeren, en werd meer geformaliseerd met de uitgave van Martin Fowler’s boek “Refactoring: Improving the Design of Existing Code” in 1999. Het is cruciaal in een Agile ontwikkelomgeving, waarbij het adaptieve codewijzigingen vergemakkelijkt. Enkele alternatieven voor handmatige refactoring zijn geautomatiseerde tools zoals TSLint of TypeScript’s eigen taalserver die bepaalde refactoringtaken voor je kan suggereren of zelfs uitvoeren. Implementatiedetails omvatten meestal het herkennen van “codegeuren”, zoals dubbele code, lange methoden of grote klassen, en het toepassen van patronen om te verhelpen - zoals het extraheren van methoden, verplaatsen naar meer geschikte klassen of het gebruik van eenvoudigere constructies. Deze patronen zijn de sleutel tot het begrijpen van het hoe en waarom van refactoring.