cat swift/docc-documentare-framework-package.md
DocC: documentare framework e package
DocC trasforma commenti, articoli e tutorial in documentazione navigabile per package e framework Swift.
DocC, Documentation Compiler, è lo strumento dell’ecosistema Swift per produrre documentazione ricca per framework e package.
La documentazione professionale non è un README enorme. È un insieme di:
- commenti sui simboli pubblici;
- articoli concettuali;
- tutorial;
- esempi;
- riferimenti navigabili.
Commenti di documentazione
Usa /// sui simboli pubblici:
/// Applica coupon a carrelli e calcola il totale finale.
public struct CouponEngine {
/// Applica un coupon al carrello indicato.
///
/// - Parameters:
/// - coupon: Il coupon da applicare.
/// - carrello: Il carrello di partenza.
/// - Returns: Un carrello aggiornato con lo sconto applicato.
/// - Throws: `ErroreCoupon` se il coupon non è valido.
public func applica(_ coupon: Coupon, a carrello: Carrello) throws -> Carrello {
...
}
}
Non scrivere commenti che ripetono il nome. Spiega contratto, fallimenti e casi limite.
Cosa documentare
Documenta:
- API pubbliche;
- errori;
- initializer con invarianti;
- tipi di dominio centrali;
- esempi d’uso;
- comportamenti non ovvi;
- thread-safety o actor isolation.
Non documentare ogni proprietà ovvia se il nome è chiaro.
Documentation catalog
Un package può avere un catalogo DocC:
Sources/
CouponKit/
CouponEngine.swift
CouponKit.docc/
CouponKit.md
Articles/
GettingStarted.md
Il catalogo contiene pagine Markdown che estendono la documentazione dei simboli.
Pagina introduttiva
Esempio CouponKit.md:
# CouponKit
Model and apply coupons with strongly typed Swift APIs.
## Overview
Use `CouponEngine` to validate and apply coupons to carts.
DocC collega testo è simboli.
Articoli
Gli articoli spiegano concetti:
# Modeling Coupon Rules
Learn how CouponKit represents coupon constraints using typed rules.
Sono utili per:
- architettura;
- scelte di dominio;
- guide introduttive;
- migrazione;
- esempi completi.
Generare documentazione
I comandi variano in base al flusso e alla piattaforma, ma l’idea è:
swift package generate-documentation
Oppure usare strumenti DocC diretti per convertire cataloghi.
Il punto didattico: la documentazione deve poter essere generata, non restare solo nei commenti del codice.
DocC in Swift 6.3
Swift 6.3 ha aggiunto capacità sperimentali a DocC, tra cui output Markdown per generare versioni Markdown delle pagine oltre al rendering standard. Questo rafforza l’idea che la documentazione sia un artefatto della toolchain, non un file separato dimenticato.
Documentare errori
/// Errori prodotti durante la validazione di un coupon.
public enum ErroreCoupon: Error, Equatable {
/// Il totale del carrello non raggiunge la soglia richiesta.
case carrelloSottoMinimo(richiesto: Int, attuale: Int)
}
Gli errori sono parte dell’API. Devono essere comprensibili.
Checklist DocC
Prima di pubblicare un package:
- ogni tipo pubblico centrale ha documentazione;
- ogni funzione
throwsspiega gli errori; - gli initializer validanti spiegano invarianti;
- esiste una pagina introduttiva;
- esiste almeno un articolo “Getting Started”;
- gli esempi compilano concettualmente;
- la documentazione si genera in CI o localmente.
Esercizio
Per CouponKit:
- documenta
CouponEngine; - documenta
ErroreCoupon; - crea un catalogo
CouponKit.docc; - aggiungi una pagina introduttiva;
- aggiungi un articolo “Getting Started”;
- genera la documentazione.
Poi leggi la documentazione come se fossi un utente esterno: cosa manca per iniziare?