Rédaction de documentation pour un projet Swift : de A à Z

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi la documentation est importante pour les projets Swift

\n

Une documentation de qualité n'est pas simplement un complément agréable à votre projet Swift, mais un élément critique du développement professionnel. Que vous créiez une bibliothèque pour CocoaPods, que vous écriviez une application pour iOS ou macOS, la documentation aide à :

\n
    \n
  • Accélérer l'intégration des nouveaux développeurs dans l'équipe ;
  • \n
  • Réduire le nombre de bugs grâce à une compréhension claire de l'API ;
  • \n
  • Améliorer la réutilisabilité du code ;
  • \n
  • Créer une image professionnelle de votre produit.
  • \n
\n

Dans cet article, nous allons parcourir le cycle complet de rédaction de documentation pour un projet Swift : des commentaires de base à la génération avancée de documentation avec DocC.

\n\n

1. Bases de la documentation du code en Swift

\n

1.1 Commentaires en Swift : trois niveaux

\n

Swift prend en charge trois types de commentaires utilisés pour la documentation :

\n
    \n
  • Sur une seule ligne (//) — pour des notes rapides ;
  • \n
  • Sur plusieurs lignes (/* ... */) — pour des blocs de texte ;
  • \n
  • De documentation (/// ou /** ... */) — pour la génération de documentation.
  • \n
\n

Pour la rédaction de documentation, utilisez exclusivement le troisième type. Voici un exemple :

\n\n
/// Calcule l'aire d'un cercle à partir d'un rayon donné.\n///\n/// - Parameter radius: Le rayon du cercle (doit être supérieur à 0).\n/// - Returns: L'aire du cercle avec une précision de deux décimales.\n/// - Throws: `InvalidRadiusError`, si le rayon <= 0.\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 Balises de documentation principales

\n

Swift prend en charge les balises Markdown standard dans les commentaires de documentation :

\n
    \n
  • - Parameter [nom] : — description du paramètre ;
  • \n
  • - Returns : — description de la valeur de retour ;
  • \n
  • - Throws : — description des erreurs ;
  • \n
  • - Note : — note supplémentaire ;
  • \n
  • - Warning : — avertissement.
  • \n
\n

Exemple avec utilisation de Markdown pour le formatage :

\n\n
/// Crée un message de bienvenue personnalisé.\n///\n/// Utilisez cette méthode pour générer des messages de bienvenue.\n/// \n/// **Exemple d'utilisation :**\n/// ```swift\n/// let greeting = makeGreeting(name: "Anna")\n/// print(greeting) // "Bonjour, Anna !"\n/// ```\n///\n/// - Parameter name: Le nom de l'utilisateur.\n/// - Returns: Une chaîne avec le message de bienvenue.\nfunc makeGreeting(name: String) -> String {\n    return "Bonjour, \\(name)!"\n}
\n\n

2. Documentation des classes, structures et protocoles

\n

2.1 Documentation des types

\n

Chaque type public dans votre projet doit avoir une description. C'est particulièrement important pour les bibliothèques et les frameworks :

\n\n
/// Représente un utilisateur dans le système.\n///\n/// La classe contient les informations de base sur l'utilisateur et les méthodes\n/// d'authentification. Prend en charge les protocoles `Codable` et `Equatable`.\nclass User: Codable, Equatable {\n    /// Identifiant unique de l'utilisateur.\n    let id: UUID\n    \n    /// Nom de l'utilisateur (de 2 à 50 caractères).\n    let name: String\n    \n    /// Email de l'utilisateur.\n    let email: String\n    \n    /// Âge de l'utilisateur (si renseigné).\n    var age: Int?\n}
\n\n

2.2 Documentation des protocoles

\n

Les protocoles nécessitent une attention particulière, car ils définissent le contrat pour toutes les implémentations :

\n\n
/// Protocole pour les objets pouvant être sérialisés en JSON.\n///\n/// Implémentez ce protocole pour ajouter la prise en charge\n/// de la sérialisation JSON pour vos types.\nprotocol JSONSerializable {\n    /// Convertit l'objet en dictionnaire pour JSON.\n    ///\n                

Blogs

Book Recommendations