Swift:
Koodin refaktorointi

Kuinka:

Aloitetaan perus Swift-esimerkillä, jossa meillä on toistuvaa koodia:

func printUserDetails(firstName: String, lastName: String, age: Int) {
    print("Etunimi: \(firstName)")
    print("Sukunimi: \(lastName)")
    print("Ikä: \(age)")
}

func printUserJob(title: String, company: String) {
    print("Työnimike: \(title)")
    print("Yritys: \(company)")
}

Tämän refaktorointiin sisältyisi User-rakenteen luominen käyttäjän attribuuttien kapseloimiseksi ja metodin lisääminen tietojen tulostamiseen:

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

    func printDetails() {
        print("Etunimi: \(firstName)")
        print("Sukunimi: \(lastName)")
        print("Ikä: \(age)")
        print("Työnimike: \(jobTitle)")
        print("Yritys: \(company)")
    }
}

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

Näyteulostus:

Etunimi: John
Sukunimi: Doe
Ikä: 30
Työnimike: Ohjelmistokehittäjä
Yritys: Tech Solutions

Syväsukellus

Refaktoroinnilla on juuret ohjelmistotekniikan alkuaikoina, mutta termi popularisoitiin 1990-luvun lopulla, erityisesti Martin Fowlerin merkittävän kirjan “Refactoring: Improving the Design of Existing Code” kautta. Kirja esitti periaatteen, että koodia tulisi jatkuvasti siistiä pienin askelin odottamatta erillistä vaihetta.

Vaihtoehtoja manuaaliselle refaktoroinnille sisältävät automatisoidut työkalut ja IDE:t (integroidut kehitysympäristöt), jotka voivat auttaa tunnistamaan duplikaattikoodia, ehdottamaan yksinkertaistuksia ja automaattisesti luomaan osia koodista. Xcode, Swift-kehitystä varten, tarjoaa erilaisia refaktorointityökaluja, kuten nimen muuttaminen ja metodin poiminta -toiminnallisuuden, jotka voivat vähentää inhimillisen virheen mahdollisuutta prosessissa.

Refaktorointia toteutettaessa on tärkeää, että käytössä on vankka testisetti. Testit toimivat turvaverkkona, varmistaen, että tekemäsi muutokset eivät tuo mukanaan bugeja. Tämä on elintärkeää, koska refaktoroinnin päätavoite on muuttaa sisäistä rakennetta vaikuttamatta ulkoiseen käyttäytymiseen.

Katso myös