Inhaltsverzeichnis

Standardi komentiranja

Jedinstvena pravila za komentare izvornog koda i dokumentacijske komentare.

Osnovna načela

Komentari objašnjavaju ZAŠTO, ne ŠTO.

Inline-komentari

Koristi za:

Izbjegavaj: Prepričavanje koda.

Primjer: Dobri vs. Loši komentari

(* LOŠE - Prepričava kod *)
I := 0;  (* Postavi I na 0 *)
while I < Count do  (* Petlja dok je I manji od Count *)
begin
  ProcessItem(Items[I]);  (* Obradi Item *)
  Inc(I);  (* Povećaj I za 1 *)
end;
 
(* DOBRO - Objašnjava namjeru i ograničenje *)
(* 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]);

Doc-komentari (PasDoc)

Za Pascal/FPC koristi se PasDoc-format.

Struktura

(*
  @abstract(Kratki opis funkcije/klase)
 
  Opširni opis ako je potrebno.
  Objasni KADA i ZAŠTO se ova funkcija koristi.
 
  @param(APath Putanja do ulazne datoteke. Mora postojati.)
  @param(AOptions Opcionalne postavke obrade)
 
  @returns(True kod uspjeha, False kod validacijske greške)
 
  @raises(EFileNotFound ako APath ne postoji)
  @raises(EAccessDenied kod nedostatka dozvola)
 
  @seealso(ProcessDirectory za obradu direktorija)
 
  Security:
    - CWE-22: Putanja se validira protiv traversala
*)
function ProcessFile(const APath: string; AOptions: TOptions): Boolean;

Obvezni tagovi

Tag Kada Opis
@abstract Uvijek Jednolinijski kratki opis
@param Kod parametara Svaki parametar pojedinačno
@returns Kod funkcija Objasni povratnu vrijednost
@raises Kod iznimki Svaka moguća iznimka

Opcionalni tagovi

Tag Kada Opis
@seealso Kod povezanih funkcija Unakrsne reference
@deprecated Kod zastarjelih API-ja Navedi zamjenu
@since Kod novih API-ja Verzija uvođenja
@note Kod važnih napomena Posebna pozornost
@warning Kod zamki Mogući problemi

Dokumentacija klasa

(*
  @abstract(DateEdit Control za unos datuma s Kalender-popupom)
 
  TWvdSDateEdit nudi polje za odabir datuma s:
  - Direktnim tekstualnim unosom s validacijom formata
  - Kalender-popupom za vizualni odabir
  - Validacijom raspona datuma (Min/Max)
 
  @bold(Uporaba:)
  - U formularima za unos datuma
  - Kao filter u pregledima podataka
  - Za odabir vremenskog raspona (od/do)
 
  @bold(Primjer:)
  @longcode(#
    DateEdit := TWvdSDateEdit.Create(Self);
    DateEdit.MinDate := EncodeDate(2000, 1, 1);
    DateEdit.MaxDate := Now;
    DateEdit.OnDateChanged := @HandleDateChanged;
  #)
 
  @seealso(TWvdSTimeEdit za odabir vremena)
  @seealso(TWvdSDateTimePicker za kombinirani odabir)
*)
TWvdSDateEdit = class(TWvdSCustomEdit)

Dokumentacija metoda

(*
  @abstract(Validira unesenu vrijednost datuma)
 
  Provjerava je li uneseni datum:
  - U ispravnom formatu
  - Unutar MinDate/MaxDate
  - Validan datum (npr. ne 31. veljače)
 
  @param(AValue Vrijednost datuma za validaciju)
  @param(AError Poruka o grešci ako validacija ne uspije)
 
  @returns(True ako je datum validan, False kod greške)
 
  @note(Prazan unos smatra se validnim ako je AllowEmpty = True)
*)
function ValidateDate(const AValue: TDateTime;
  out AError: string): Boolean;

Dokumentacija svojstava

(*
  @abstract(Minimalni dopušteni datum)
 
  Postavlja najraniji datum koji se može odabrati.
  Unosi prije ovog datuma bit će odbijeni.
 
  @seealso(MaxDate za gornju granicu)
*)
property MinDate: TDateTime read FMinDate write SetMinDate;

Kontrolna lista pregleda

[ ] Komentar objašnjava namjeru/trade-offs, ne mehaniku
[ ] Komentar odgovara trenutnom ponašanju (bez drifta)
[ ] Komentar je na engleskom i sažet
[ ] Javni API ima potpune doc-komentare
[ ] @param za svaki parametar prisutan
[ ] @returns za funkcije prisutan
[ ] @raises za moguće iznimke prisutan
[ ] Bez TODO/FIXME-komentara

Kada komentirati

Komentirati

Ne komentirati

Formati specifični za jezik

Jezik Format Primjer
Pascal/FPC PasDoc (* @abstract(…) *)
Delphi XMLDoc-stil / <summary>…</summary> | | C# | XMLDoc | / <summary>…</summary>
Rust rustdoc