Swift:
Refaktoryzacja

Jak to zrobić:

Zacznijmy od podstawowego przykładu w Swift, gdzie mamy pewien powtarzalny kod:

func printUserDetails(firstName: String, lastName: String, age: Int) {
    print("Imię: \(firstName)")
    print("Nazwisko: \(lastName)")
    print("Wiek: \(age)")
}

func printUserJob(title: String, company: String) {
    print("Stanowisko: \(title)")
    print("Firma: \(company)")
}

Refaktoryzacja tego obejmowałaby utworzenie struktury User do enkapsulacji atrybutów użytkownika oraz dodanie metody do drukowania szczegółów:

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

    func printDetails() {
        print("Imię: \(firstName)")
        print("Nazwisko: \(lastName)")
        print("Wiek: \(age)")
        print("Stanowisko: \(jobTitle)")
        print("Firma: \(company)")
    }
}

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

Przykładowe wyjście:

Imię: John
Nazwisko: Doe
Wiek: 30
Stanowisko: Developer Oprogramowania
Firma: Tech Solutions

Szczegółowe omówienie

Refaktoryzacja ma swoje korzenie sięgające wczesnych dni inżynierii oprogramowania, ale termin ten zyskał na popularności pod koniec lat 90., szczególnie dzięki fundamentalnej książce Martina Fowlera “Refaktoryzacja: Ulepszanie struktury istniejącego kodu”. Książka ta przedstawiła zasadę, że kod powinien być ciągle oczyszczany w małych krokach, zamiast czekać na oddzielną fazę.

Alternatywy dla ręcznej refaktoryzacji obejmują automatyczne narzędzia i środowiska IDE (Zintegrowane Środowisko Programistyczne), które mogą pomóc wykryć zduplikowany kod, sugerować uproszczenia i automatycznie generować części kodu. Xcode, na potrzeby rozwoju Swifta, oferuje różne narzędzia refaktoryzacyjne, takie jak zmiana nazwy i funkcjonalność wyodrębniania metody, które mogą zmniejszyć potencjał ludzkiego błędu w procesie.

Podczas implementacji refaktoryzacji ważne jest, aby mieć solidną suitę testów. Testy działają jak siatka bezpieczeństwa, zapewniając, że dokonane zmiany nie wprowadzają błędów. Jest to istotne, ponieważ głównym celem refaktoryzacji jest zmiana wewnętrznej struktury bez wpływu na zewnętrzne zachowanie.

Zobacz także