Wie man in fremdem Code nicht untergeht: Einführung in den Code-Style Swift
\n\nStellen Sie sich vor: Sie öffnen einen Pull-Request eines Kollegen und dort steht let userName neben let UserName, Einrückungen springen von 2 auf 8 Leerzeichen, und die geschweiften Klammern stehen mal in derselben Zeile, mal in einer neuen. Kommt Ihnen das bekannt vor? Wenn Ihr Team in Swift schreibt, werden Sie früher oder später auf Chaos stoßen. Oder Sie sind bereits darauf gestoßen.
Teamarbeit bedeutet nicht „wie es mir passt“, sondern „wie es alle verstehen“. Code-Style und Konventionen für Swift sind keine Bürokratie, sondern ein Rettungsanker. Sie sparen Stunden bei Code-Reviews, reduzieren die Anzahl von Fehlern und machen den Code auch nach einem halben Jahr noch lesbar. In diesem Artikel erkläre ich, welche Regeln wirklich funktionieren, zeige Beispiele in Swift und gebe eine Checkliste für die Einführung in Ihrem Team. Los geht's!
\n\nWarum Swift ohne Code-Style zur Hölle wird
\n\nSwift ist eine junge, aber strenge Sprache. Sie drängt zur Sorgfalt: Optionals, Generics, Protokolle. Aber ohne Vereinbarungen im Team rettet selbst die perfekte Syntax nicht. Hier sind drei Gründe, warum Swift-Code-Style für jedes Projekt notwendig ist:
\n\n- \n
- Onboarding-Geschwindigkeit. Ein neuer Entwickler verbringt Tage damit, nicht die Logik zu lernen, sondern „wo liegt was“. \n
- Code-Review. Statt über die Architektur zu diskutieren, streiten Sie über Leerzeichen. Kennen Sie den Schmerz? \n
- Technische Schulden. Unterschiedlicher Stil – unterschiedliche Logik. Eines Tages wird das in der Produktion einschlagen. \n
Die gute Nachricht: Swift-Konventionen sind bereits erfunden. Es bleibt nur, sich zu einigen und zu automatisieren.
\n\nNamensgebung: Swift-Naming-Convention
\n\nSwift ist eine Sprache mit einer klaren Philosophie: „Klarheit ist wichtiger als Kürze“. Das bedeutet, dass getUserData() schlecht ist, aber fetchUserProfile() gut. Lassen Sie uns die grundlegenden Regeln der Swift-Naming-Convention durchgehen.
Variablen und Konstanten
\n\nVerwenden Sie camelCase mit einem Kleinbuchstaben am Anfang. Benennen Sie Entitäten so, dass sie ohne Kommentar verständlich sind:
\n\n// Schlecht\nlet n = "Alice"\nlet u = 25\n\n// Gut\nlet userName = "Alice"\nlet userAge = 25\n\n// Ausgezeichnet (mit Typ)\nlet isActiveUser: Bool = true\n\n\nFügen Sie bei booleschen Variablen die Präfixe is, has, should hinzu – das ist eine Swift-Best-Practice.
Funktionen und Methoden
\n\nFunktionen sollten wie ein Satz lesbar sein. Verb + Substantiv – die goldene Regel:
\n\n// Schlecht\nfunc change() { }\nfunc processData() { }\n\n// Gut\nfunc updateUserProfile() { }\nfunc validateEmailAddress() { }\n\n// Mit Parametern noch lesbarer\nfunc configureButton(withTitle title: String, color: UIColor) { }\n\n\nBeachten Sie: Der erste Parameter wird beim Aufruf oft weggelassen, aber für die Lesbarkeit ist es besser, ihn explizit anzugeben. Dies ist Teil des Swift-Code-Style-Guides von Apple.
\n\nTypen und Protokolle
\n\nKlassen, Strukturen, Enums – PascalCase. Protokolle ebenfalls, aber versuchen Sie, sie als Adjektive zu benennen:
\n\nclass UserManager { }\nstruct UserProfile { }\nenum NetworkError { }\n\nprotocol Configurable { }\nprotocol DataPersistable { }\n\n\nFormatierung: Gleichmäßig atmen
\n\nDas Thema von Glaubenskriegen – Einrückungen, Klammern, Leerzeichen. Lassen Sie uns Klarheit schaffen. Für den Swift-Code-Style empfehle ich, den SwiftLint-Standard zu verwenden (dazu später mehr).
\n\nGeschweifte Klammern
\n\nApple empfiehlt, die öffnende Klammer in derselben Zeile zu setzen (K&R-Stil). Die schließende Klammer kommt in eine neue Zeile:
\n\n// Richtig\nif isLoggedIn {\n showDashboard()\n} else {\n showLoginScreen()\n}\n\n// Falsch\nif isLoggedIn\n{\n showDashboard()\n}\n\n\nAusnahme sind Closures. Dort können die Klammern in derselben Zeile stehen, wenn der Code kurz ist:
\n\nlet sortedUsers = users.sorted { $0.age < $1.age }\n