Code-Review in Swift: Was zu prüfen ist und wie man Feedback gibt

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

Einleitung: Warum Code-Review für Swift-Entwickler wichtig ist

\n\n

Code-Review (Code-Überprüfung) ist ein Prozess, bei dem ein oder mehrere Entwickler den von einem Kollegen geschriebenen Code überprüfen, bevor er in den Hauptzweig des Projekts gelangt. Für Einsteiger in der iOS/macOS-Entwicklung ist dies nicht nur eine Formalität, sondern ein mächtiges Werkzeug zum Lernen und zur Verbesserung der Codequalität.

\n\n

Im Swift-Ökosystem, in dem strenge Typisierung und Speichersicherheit an erster Stelle stehen, hilft das Code-Review nicht nur dabei, logische Fehler zu erkennen, sondern auch Probleme mit der Verwendung von ARC (Automatic Reference Counting), optionalen Typen und Multithreading. In diesem Artikel werden wir untersuchen, was genau im Swift-Code zu überprüfen ist und wie man Feedback gibt, das nützlich und konstruktiv ist.

\n\n

Wesentliche Aspekte des Code-Reviews in Swift

\n\n

1. Code-Sauberkeit und Einhaltung des Swift-Stils

\n\n

Zuallererst sollte der Code lesbar sein. In Swift gibt es klare Namenskonventionen, die in den API Design Guidelines von Apple beschrieben sind. Worauf ist zu achten:

\n\n
    \n
  • Namen von Variablen und Funktionen sollten klar und aussagekräftig sein. Vermeiden Sie Abkürzungen wie btn – verwenden Sie submitButton.
  • \n
  • Reihenfolge der Deklarationen: Eigenschaften, Initialisierer, Methoden, Unterklassen. Verwenden Sie // MARK: zur Gruppierung.
  • \n
  • Verwendung von Leerzeichen und Einrückungen. Die Swift-Community bevorzugt 4 Leerzeichen (oder 2 in manchen Teams), aber das Wichtigste ist die Einheitlichkeit.
  • \n
  • Vermeiden Sie Force Unwrapping (!) ohne zwingende Notwendigkeit. Verwenden Sie stattdessen guard let oder if let.
  • \n
\n\n

Beispiel für schlechten und guten Stil:

\n\n
// Schlecht\nvar x: String!\nfunc doSomething() { print(x!) }\n\n// Gut\nvar username: String?\nfunc printUsername() {\n    guard let name = username else { return }\n    print(name)\n}\n
\n\n

2. Speichersicherheit und ARC

\n\n

Swift verwendet die automatische Referenzzählung (ARC), aber das bedeutet nicht, dass man starke Referenzzyklen ignorieren kann. Überprüfen Sie beim Code-Review unbedingt:

\n\n
    \n
  • Closures: Wenn ein Closure self erfasst und self das Closure hält, entsteht ein Zyklus. Verwenden Sie [weak self] oder [unowned self].
  • \n
  • Delegates: Sie sollten fast immer schwach sein (weak var delegate).
  • \n
  • Caches und Beobachter: Entfernen Sie Abonnements von NotificationCenter oder KVO bei der Deinitialisierung des Objekts.
  • \n
\n\n
class NetworkManager {\n    var onComplete: (() -> Void)?\n\n    func fetchData() {\n        // GEFÄHRLICH: starke Referenz auf self\n        URLSession.shared.dataTask(with: url) { data, _, _ in\n            self.handleResponse(data) // Zyklus!\n        }\n        \n        // SICHER\n        URLSession.shared.dataTask(with: url) { [weak self] data, _, _ in\n            self?.handleResponse(data)\n        }\n    }\n}\n
\n\n

3. Fehlerbehandlung und optionale Typen

\n\n

Swift bietet ein leistungsstarkes System zur Fehlerbehandlung mit do-catch und optionalen Typen. Überprüfen Sie beim Code-Review:

\n\n
    \n
  • Sind alle Fehler behandelt? Verwenden Sie try? nur, wenn Sie mit nil umgehen können.
  • \n
  • Wird try! im Produktionscode verwendet? Dies ist fast immer eine schlechte Praxis.
  • \n
  • Werden optionale Verkettungen korrekt behandelt? Vermeiden Sie tiefe Verschachtelungen von if let – verwenden Sie guard für frühe Ausstiege.
  • \n
\n\n
// Stattdessen:\nif let data = response.data {\n    if let json = try? JSONSerialization.jsonObject(with: data) {\n        i                

Blogs

Buchempfehlungen