Swift:
Refactoring
Hoe te:
Laten we beginnen met een basisvoorbeeld in Swift waar we wat herhalende code hebben:
func printUserDetails(firstName: String, lastName: String, age: Int) {
print("Voornaam: \(firstName)")
print("Achternaam: \(lastName)")
print("Leeftijd: \(age)")
}
func printUserJob(title: String, company: String) {
print("Functietitel: \(title)")
print("Bedrijf: \(company)")
}
Het refactoren hiervan zou het creëren van een User
struct omvatten om gebruikersattributen te encapsuleren en een methode toe te voegen om details af te drukken:
struct User {
let firstName: String
let lastName: String
let age: Int
let jobTitle: String
let company: String
func printDetails() {
print("Voornaam: \(firstName)")
print("Achternaam: \(lastName)")
print("Leeftijd: \(age)")
print("Functietitel: \(jobTitle)")
print("Bedrijf: \(company)")
}
}
let user = User(firstName: "John", lastName: "Doe", age: 30, jobTitle: "Softwareontwikkelaar", company: "Tech Solutions")
user.printDetails()
Voorbeelduitvoer:
Voornaam: John
Achternaam: Doe
Leeftijd: 30
Functietitel: Softwareontwikkelaar
Bedrijf: Tech Solutions
Diepere Duik
Refactoring heeft wortels die teruggaan tot de vroege dagen van software-engineering, maar de term werd gepopulariseerd in de late jaren 90, met name door het baanbrekende boek van Martin Fowler “Refactoring: Improving the Design of Existing Code”. Het boek legde het principe uit dat code continu opgeruimd moet worden in kleine stappen in plaats van te wachten op een aparte fase.
Alternatieven voor handmatige refactoring omvatten geautomatiseerde tools en IDE’s (Integrated Development Environments) die kunnen helpen bij het detecteren van dubbele code, het voorstellen van vereenvoudigingen en het automatisch genereren van delen van de code. Xcode, voor Swift-ontwikkeling, biedt verschillende refactoringtools, zoals functies voor hernoemen en methode-extractie, die de kans op menselijke fouten in het proces kunnen verminderen.
Bij het implementeren van refactoring is het belangrijk om een solide testsuite op zijn plaats te hebben. Tests fungeren als een vangnet en zorgen ervoor dat de wijzigingen die je aanbrengt geen bugs introduceren. Dit is essentieel, aangezien het belangrijkste doel van refactoring is om de interne structuur te wijzigen zonder het externe gedrag te beïnvloeden.