Swift:
Rifattorizzazione

Come fare:

Partiamo con un semplice esempio in Swift in cui abbiamo del codice ripetitivo:

func printUserDetails(firstName: String, lastName: String, age: Int) {
    print("Nome: \(firstName)")
    print("Cognome: \(lastName)")
    print("Età: \(age)")
}

func printUserJob(title: String, company: String) {
    print("Titolo lavorativo: \(title)")
    print("Azienda: \(company)")
}

Rifattorizzare questo codice includerebbe la creazione di una struct User per incapsulare gli attributi dell’utente e aggiungere un metodo per stampare i dettagli:

struct User {
    let firstName: String
    let lastName: String
    let age: Int
    let jobTitle: String
    let company: String

    func printDetails() {
        print("Nome: \(firstName)")
        print("Cognome: \(lastName)")
        print("Età: \(age)")
        print("Titolo lavorativo: \(jobTitle)")
        print("Azienda: \(company)")
    }
}

let user = User(firstName: "John", lastName: "Doe", age: 30, jobTitle: "Sviluppatore Software", company: "Tech Solutions")
user.printDetails()

Output di esempio:

Nome: John
Cognome: Doe
Età: 30
Titolo lavorativo: Sviluppatore Software
Azienda: Tech Solutions

Approfondimento

Il refactoring ha radici che risalgono ai primi giorni dell’ingegneria del software, ma il termine è stato popolarizzato alla fine degli anni ‘90, in particolare attraverso il libro fondamentale di Martin Fowler “Refactoring: Improving the Design of Existing Code”. Il libro ha stabilito il principio secondo cui il codice dovrebbe essere continuamente ripulito in piccoli passi piuttosto che aspettare una fase separata.

Le alternative al refactoring manuale includono strumenti automatizzati e IDE (Integrated Development Environments) che possono aiutare a rilevare il codice duplicato, suggerire semplificazioni e generare automaticamente porzioni di codice. Xcode, per lo sviluppo in Swift, offre vari strumenti di refactoring, come la funzionalità di rinominazione e estrazione del metodo, che possono ridurre il potenziale per errori umani nel processo.

Quando si implementa il refactoring, è importante avere una solida suite di test in atto. I test agiscono come una rete di sicurezza, assicurando che le modifiche apportate non introducano bug. Questo è vitale poiché l’obiettivo principale del refactoring è modificare la struttura interna senza influenzare il comportamento esterno.

Vedi anche