Schreiben von Dokumentation für Swift-Projekte: von A bis Z

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 Dokumentation für Swift-Projekte wichtig ist

\n

Qualitativ hochwertige Dokumentation ist nicht nur eine nette Ergänzung zu Ihrem Swift-Projekt, sondern ein kritisches Element professioneller Entwicklung. Unabhängig davon, ob Sie eine Bibliothek für CocoaPods erstellen, eine App für iOS oder macOS schreiben, hilft Dokumentation dabei:

\n
    \n
  • Onboarding zu beschleunigen für neue Entwickler im Team;
  • \n
  • Die Anzahl der Fehler zu reduzieren durch ein klares Verständnis der API;
  • \n
  • Die Wiederverwendbarkeit von Code zu erhöhen;
  • \n
  • Ein professionelles Image Ihres Produkts zu schaffen.
  • \n
\n

In diesem Artikel behandeln wir den gesamten Zyklus des Schreibens von Dokumentation für ein Swift-Projekt: von grundlegenden Kommentaren bis zur fortgeschrittenen Dokumentationsgenerierung mit DocC.

\n\n

1. Grundlagen der Dokumentation von Swift-Code

\n

1.1 Kommentare in Swift: drei Ebenen

\n

Swift unterstützt drei Arten von Kommentaren, die zur Dokumentation verwendet werden:

\n
    \n
  • Einzeilig (//) — für schnelle Notizen;
  • \n
  • Mehrzeilig (/* ... */) — für Textblöcke;
  • \n
  • Dokumentierend (/// oder /** ... */) — zur Generierung von Dokumentation.
  • \n
\n

Verwenden Sie zum Schreiben von Dokumentation ausschließlich den dritten Typ. Hier ist ein Beispiel:

\n\n
/// Berechnet die Fläche eines Kreises anhand des gegebenen Radius.\n///\n/// - Parameter radius: Der Radius des Kreises (muss größer als 0 sein).\n/// - Returns: Die Fläche des Kreises auf zwei Nachkommastellen genau.\n/// - Throws: `InvalidRadiusError`, wenn radius <= 0 ist.\nfunc calculateCircleArea(radius: Double) throws -> Double {\n    guard radius > 0 else {\n        throw InvalidRadiusError.negativeOrZero\n    }\n    return Double.pi * radius * radius\n}
\n\n

1.2 Grundlegende Dokumentations-Tags

\n

Swift unterstützt standardmäßige Markdown-Tags innerhalb von dokumentierenden Kommentaren:

\n
    \n
  • - Parameter [name]: — Beschreibung des Parameters;
  • \n
  • - Returns: — Beschreibung des Rückgabewerts;
  • \n
  • - Throws: — Beschreibung der Fehler;
  • \n
  • - Note: — zusätzliche Anmerkung;
  • \n
  • - Warning: — Warnung.
  • \n
\n

Beispiel mit Markdown zur Formatierung:

\n\n
/// Erstellt eine personalisierte Begrüßung.\n///\n/// Verwenden Sie diese Methode zur Generierung von Begrüßungsnachrichten.\n/// \n/// **Anwendungsbeispiel:**\n/// ```swift\n/// let greeting = makeGreeting(name: "Anna")\n/// print(greeting) // "Hallo, Anna!"\n/// ```\n///\n/// - Parameter name: Der Name des Benutzers.\n/// - Returns: Ein String mit der Begrüßung.\nfunc makeGreeting(name: String) -> String {\n    return "Hallo, \\(name)!"\n}
\n\n

2. Dokumentation von Klassen, Strukturen und Protokollen

\n

2.1 Dokumentation von Typen

\n

Jeder öffentliche Typ in Ihrem Projekt sollte eine Beschreibung haben. Dies ist besonders wichtig für Bibliotheken und Frameworks:

\n\n
/// Stellt einen Benutzer im System dar.\n///\n/// Die Klasse enthält grundlegende Informationen über den Benutzer und Methoden\n/// zur Authentifizierung. Unterstützt die Protokolle `Codable` und `Equatable`.\nclass User: Codable, Equatable {\n    /// Eindeutige ID des Benutzers.\n    let id: UUID\n    \n    /// Name des Benutzers (zwischen 2 und 50 Zeichen).\n    let name: String\n    \n    /// E-Mail des Benutzers.\n    let email: String\n    \n    /// Alter des Benutzers (falls angegeben).\n    var age: Int?\n}
\n\n

2.2 Dokumentation von Protokollen

\n

Protokolle erfordern besondere Aufmerksamkeit, da sie den Vertrag für alle Implementierungen definieren:

\n\n
/// Protokoll für Objekte, die in JSON serialisiert werden können.\n///\n/// Implementieren Sie dieses Protokoll, um Unterstützung für\n/// JSON-Serialisierung für Ihre Typen hinzuzufügen.\nprotocol JSONSerializable {\n    /// Konvertiert das Objekt in ein Wörterbuch für JSON.\n    ///\n                

Blogs

Buchempfehlungen