Clean Code in Swift: Prinzipien und Beispiele für iOS/macOS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Clean Code auf Swift: Warum iOS-Entwickler es brauchen



Jeder Entwickler kennt die Situation, wenn alter Code nach einem Monat zu "Spaghetti" wird. In der Welt von Swift, wo Projekte schnell wachsen, wird die Aufrechterhaltung von sauberem Code kritisch. Clean Code ist nicht nur Ästhetik, sondern ein Werkzeug, das Stunden des Debuggens spart und das Hinzufügen neuer Features vereinfacht. In diesem Artikel analysieren wir die wichtigsten Prinzipien von Clean Code in Bezug auf Swift mit realen Beispielen für iOS und macOS.



1. Benennung: Lesbarkeit zuerst



Die richtige Benennung ist die Grundlage von sauberem Code. In Swift, wo APIs oft selbstdokumentierend sind, sind schlechte Namen die Hauptquelle für Verwirrung.



Schlechtes Beispiel:

class DataManager {    func getData() -> [String: Any] {        // ...    }}


Gutes Beispiel:

class UserProfileFetcher {    func fetchUserProfile(for userID: String) -> Result<UserProfile, NetworkError> {        // ...    }}


  • Verwenden Sie Verben für Methoden (fetch, update, delete).
  • Vermeiden Sie Abkürzungen — vc, btn, str — das ist von gestern.
  • Boolesche Variablen sollten wie Aussagen lesbar sein: isLoggedIn, hasNetworkConnection.


2. Funktionen: klein und mit einem Zweck



In Swift, wo Closures und funktionale Programmierung beliebt sind, kann man leicht übertreiben und eine monolithische Funktion schreiben. Das Single-Responsibility-Prinzip funktioniert hier zu 100%.



Schlechtes Beispiel:

func processUserData(user: User) {    // Validierung    if user.email.isEmpty { return }    // Speichern in CoreData    CoreDataStack.shared.save(user)    // Senden an den Server    APIClient.shared.send(user)    // UI aktualisieren    DispatchQueue.main.async {        self.tableView.reloadData()    }}


Gutes Beispiel (Aufteilung in kleine Funktionen):

func processUserData(user: User) {    guard validateUser(user) else { return }    saveUserLocally(user)    sendUserToServer(user)    updateUI()}

private func validateUser(_ user: User) -> Bool { return !user.email.isEmpty}

private func saveUserLocally(_ user: User) { CoreDataStack.shared.save(user)}

private func sendUserToServer(_ user: User) { APIClient.shared.send(user)}

private func updateUI() { DispatchQueue.main.async { self.tableView.reloadData() }}


Die 20-Zeilen-Regel: Wenn eine Funktion nicht auf den Bildschirm passt — teilen Sie sie auf. Jede Funktion sollte nur eine einzige Aktion ausführen.



3. SOLID in Swift: Praktische Beispiele



Die SOLID-Prinzipien sind keine Abstraktion, sondern Arbeitswerkzeuge. Wir analysieren zwei für iOS wichtige Prinzipien.



Open/Closed-Prinzip

Klassen sollten für Erweiterungen offen, aber für Modifikationen geschlossen sein. Anstatt eine fertige Klasse zu ändern, verwenden Sie Protokolle.



protocol PaymentProcessor {    func process(amount: Double, currency: String) -> Bool}

class ApplePayProcessor: PaymentProcessor { func process(amount: Double, currency: String) -> Bool { // Apple Pay Logik return true }}

class StripeProcessor: PaymentProcessor { func process(amount: Double, currency: String) -> Bool { // Stripe Logik return true }}

// Jetzt eine neue Zahlungsmethode hinzuzufügen ist einfach — erstellen Sie eine neue Klasse, ohne alte anzutasten.


Liskovsches Substitutionsprinzip

Unterklassen sollten die Logik der Elternklasse nicht brechen. Ein typischer Fehler ist das Überschreiben einer Methode mit einer geänderten Vertragsgrundlage.



class Vehicle {    func startEngine() {        print("Engine started")    }}

class ElectricCar: Vehicle { override func startEngine() { // Verletzung: Elektro

Blogs

Buchempfehlungen