TypeScript:
Refaktoryzacja
Jak to zrobić:
Rozważmy funkcję TypeScript, która miała lepsze dni - jest nieco bałaganu i potrzebuje trochę troskliwej opieki:
function userInfo(data: any): string {
return "User Info: " + data.name + ", " + data.age + ", " + data.email + ";" ;
}
Po refaktoryzacji może to wyglądać tak:
interface User {
name: string;
age: number;
email: string;
}
function formatUserInfo(user: User): string {
return `User Info: ${user.name}, ${user.age}, ${user.email};`;
}
Drugi przykład jest bardziej solidny, wykorzystuje system typów TypeScript za pomocą interface
, aby uniknąć potencjalnych błędów wykonania i poprawić czytelność.
Szczegółowe omówienie
Refaktoryzacja nie jest nowoczesnym pojęciem; ewoluowała razem z programowaniem, stając się bardziej sformalizowana po wydaniu książki Martina Fowlera “Refaktoryzacja: Ulepszanie struktury istniejącego kodu” w 1999 roku. Jest kluczowa w środowisku rozwoju Agile, ułatwiając adaptacyjne zmiany kodu. Niektóre alternatywy dla ręcznej refaktoryzacji to narzędzia automatyczne, takie jak TSLint czy własny serwer językowy TypeScript, które mogą sugerować, a nawet wykonywać niektóre zadania refaktoryzacyjne za Ciebie. Szczegóły implementacji zwykle obejmują rozpoznawanie “zapachów kodu”, takich jak zduplikowany kod, długie metody czy duże klasy, oraz stosowanie wzorców w celu ich naprawienia — takich jak ekstrakcja metod, przenoszenie do bardziej odpowiednich klas lub używanie prostszych konstrukcji. Te wzorce są kluczowe do zrozumienia jak i dlaczego dokonuje się refaktoryzacji.