TypeScript:
Rifattorizzazione
Come fare:
Considera una funzione TypeScript che ha visto giorni migliori - è un po’ un disastro e potrebbe usare un po’ di cura amorevole:
function userInfo(data: any): string {
return "User Info: " + data.name + ", " + data.age + ", " + data.email + ";";
}
Rifattorizzato, potrebbe apparire così:
interface User {
name: string;
age: number;
email: string;
}
function formatUserInfo(user: User): string {
return `User Info: ${user.name}, ${user.age}, ${user.email};`;
}
Il secondo esempio è più robusto, sfruttando il sistema di tipi di TypeScript con un interface
per evitare potenziali errori di runtime e migliorare la leggibilità.
Approfondimento
Il Refactoring non è un concetto moderno; è evoluto con la programmazione, diventando più formalizzato con la pubblicazione del libro di Martin Fowler “Refactoring: Miglioramento del design del codice esistente” nel 1999. È cruciale in un ambiente di sviluppo Agile, facilitando cambiamenti adattivi al codice. Alcune alternative al refactoring manuale includono strumenti automatizzati come TSLint o il server linguistico di TypeScript stesso che possono suggerire o persino eseguire determinati compiti di refactoring per te. I dettagli di implementazione di solito coinvolgono il riconoscimento di “bad smells” del codice, come codice duplicato, metodi lunghi o classi grandi, e applicare pattern per rimediare, come estrarre metodi, spostarsi in classi più adatte o usare costrutti più semplici. Questi pattern sono fondamentali per comprendere il come e il perché del refactoring.