Inhaltsverzeichnis
Standardi komentiranja
Jedinstvena pravila za komentare izvornog koda i dokumentacijske komentare.
Osnovna načela
Komentari objašnjavaju ZAŠTO, ne ŠTO.
- Dokumentiraj javne API-je; drži interne komentare minimalnima
- Preferiraj jasan kod nad komentarima
- Komentiraj samo neočito
- Standardni jezik: Engleski
Inline-komentari
Koristi za:
- Intent (namjera)
- Constraints (ograničenja)
- Trade-offs (kompromisi)
- Edge Cases (rubni slučajevi)
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
- Javne API-je (obvezno)
- Neočite algoritme
- Workaround-e za poznate bugove
- Sigurnosno relevantne odluke
- Optimizacije performansi s trade-offs
- Vanjske ovisnosti
Ne komentirati
- Očit kod
- Samorazumljiv kod
- Privremeni debug-kod (treba ukloniti)
- Zakomentirani kod (treba obrisati)
Formati specifični za jezik
| Jezik | Format | Primjer |
|---|---|---|
| Pascal/FPC | PasDoc | (* @abstract(…) *) |
| Delphi | XMLDoc-stil | / <summary>…</summary> |
| Rust | rustdoc |
Zuletzt geändert: 29.01.2026. u 22:29