Regole uniformi per commenti nel codice sorgente e commenti di documentazione.
Usa per:
Evita: Raccontare il codice.
(* CATTIVO - Racconta il codice *) I := 0; (* Imposta I a 0 *) while I < Count do (* Cicla finché I è minore di Count *) begin ProcessItem(Items[I]); (* Elabora Item *) Inc(I); (* Incrementa I di 1 *) end; (* BUONO - Spiega intenzione e vincolo *) (* Process items in reverse order to maintain dependency chain. Items may reference later items, so forward processing would fail. *) for I := Count - 1 downto 0 do ProcessItem(Items[I]);
Per Pascal/FPC si usa il formato PasDoc.
(* @abstract(Breve descrizione della funzione/classe) Descrizione dettagliata se necessario. Spiega QUANDO e PERCHE questa funzione viene usata. @param(APath Percorso al file di input. Deve esistere.) @param(AOptions Impostazioni di elaborazione opzionali) @returns(True in caso di successo, False in caso di errore di validazione) @raises(EFileNotFound se APath non esiste) @raises(EAccessDenied in caso di permessi mancanti) @seealso(ProcessDirectory per elaborazione directory) Security: - CWE-22: Il percorso viene validato contro traversal *) function ProcessFile(const APath: string; AOptions: TOptions): Boolean;
| Tag | Quando | Descrizione |
|---|---|---|
@abstract | Sempre | Breve descrizione su una riga |
@param | Con parametri | Ogni parametro singolarmente |
@returns | Con funzioni | Spiegare valore di ritorno |
@raises | Con exception | Ogni possibile exception |
| Tag | Quando | Descrizione |
|---|---|---|
@seealso | Con funzioni correlate | Riferimenti incrociati |
@deprecated | Con API obsolete | Indicare sostituto |
@since | Con nuove API | Versione di introduzione |
@note | Con note importanti | Attenzione particolare |
@warning | Con insidie | Possibili problemi |
(* @abstract(Control DateEdit per input date con popup calendario) TWvdSDateEdit offre un campo di input per selezione date con: - Input testo diretto con validazione formato - Popup calendario per selezione visiva - Validazione range date (Min/Max) @bold(Utilizzo:) - In form per input date - Come filtro in viste dati - Per selezione periodo (da/a) @bold(Esempio:) @longcode(# DateEdit := TWvdSDateEdit.Create(Self); DateEdit.MinDate := EncodeDate(2000, 1, 1); DateEdit.MaxDate := Now; DateEdit.OnDateChanged := @HandleDateChanged; #) @seealso(TWvdSTimeEdit per selezione ora) @seealso(TWvdSDateTimePicker per selezione combinata) *) TWvdSDateEdit = class(TWvdSCustomEdit)
(* @abstract(Valida il valore data inserito) Verifica se la data inserita: - E nel formato corretto - E compresa in MinDate/MaxDate - Rappresenta una data valida (es. nessun 31 febbraio) @param(AValue Il valore data da validare) @param(AError Messaggio di errore se la validazione fallisce) @returns(True se la data e valida, False in caso di errore) @note(Input vuoto e considerato valido se AllowEmpty = True) *) function ValidateDate(const AValue: TDateTime; out AError: string): Boolean;
(* @abstract(Data minima consentita) Imposta la data selezionabile piu antica. Gli input precedenti a questa data vengono rifiutati. @seealso(MaxDate per limite superiore) *) property MinDate: TDateTime read FMinDate write SetMinDate;
[ ] Il commento spiega Intent/Trade-offs, non la meccanica [ ] Il commento corrisponde al comportamento attuale (nessun drift) [ ] Il commento e in inglese e conciso [ ] API pubblica ha commenti doc completi [ ] @param per ogni parametro presente [ ] @returns per funzioni presente [ ] @raises per possibili exception presente [ ] Nessun commento TODO/FIXME
| Linguaggio | Formato | Esempio |
|---|---|---|
| Pascal/FPC | PasDoc | (* @abstract(…) *) |
| Delphi | XMLDoc-style | / <summary>…</summary> |
| Rust | rustdoc |