Inhaltsverzeichnis
Osnovna kontrolna lista
Merge-Gate - Ova kontrolna lista primjenjuje se na svaku izmjenu.
Kod s kršenjima ove kontrolne liste neće biti prihvaćen.
Spremno za produkciju (nulta tolerancija)
Zabranjeni obrasci
| Zabranjeno | Potrebno |
|---|---|
// TODO: komentari | Potpuna implementacija |
// FIXME: komentari | Ispravljen kod |
| Stub-funkcije | Prave implementacije |
| Mock-implementacije | Produkcijski kod |
| Placeholder-vrijednosti | Prave vrijednosti |
raise ENotImplemented | Funkcionalan kod |
Kontrolna lista
[ ] Nema TODO-komentara u produkcijskom kodu [ ] Nema FIXME-komentara u produkcijskom kodu [ ] Nema stub ili placeholder funkcija [ ] Nema mock-implementacija [ ] Svaka funkcija potpuno implementirana [ ] Svi slučajevi greške obrađeni [ ] Svi rubni slučajevi pokriveni
Opća kvaliteta
[ ] Nema dupliciranog koda (DRY-princip) [ ] Nema magičnih brojeva (koristi imenovane konstante) [ ] Konzistentno formatiranje u cijeloj datoteci [ ] Sve javne metode imaju smislene poruke o greškama
Primjer: Magični brojevi
(* ZABRANJENO - Magični broj *) if Length(Name) > 64 then raise EValidationError.Create('Name too long'); (* ISPRAVNO - Imenovana konstanta *) const MAX_NAME_LENGTH = 64; if Length(Name) > MAX_NAME_LENGTH then raise EValidationError.Create(Format(rsNameTooLong, [MAX_NAME_LENGTH]));
Osnova rukovanja greškama
[ ] Nema praznih catch/except-blokova [ ] Greške se logiraju PRIJE nego što se obrađuju [ ] Specifične iznimke prije općih [ ] Stack-trace sačuvan kod ponovnog bacanja [ ] Resursi deterministički oslobođeni (try-finally)
Primjer: Ispravno rukovanje greškama
(* ZABRANJENO - Prazan exception-handler *) try DoSomething; except // Ne raditi ništa - ZABRANJENO! end; (* ZABRANJENO - Opća iznimka prva *) try DoSomething; except on E: Exception do // Previše opće! HandleError(E); on E: EFileNotFound do // Nikad se neće dosegnuti! HandleFileNotFound(E); end; (* ISPRAVNO - Specifično, logirano, resursi oslobođeni *) var Resource: TResource; begin Resource := TResource.Create; try try DoSomething; except on E: EFileNotFound do begin Logger.Error(rsFileNotFound, [E.Message]); (* Prvo logiraj *) raise; (* Zatim proslijedi dalje - stack-trace sačuvan *) end; on E: EAccessDenied do begin Logger.Error(rsAccessDenied, [E.Message]); raise; end; end; finally Resource.Free; (* UVIJEK oslobodi *) end; end;
Osnova logiranja
[ ] Format i verbosity logiranja prate politiku [ ] Nema tajni ili osjetljivih podataka u logovima [ ] Strukturirani format: [Timestamp] [Level] [Source] Message
Smjernice za razine loga
| Razina | Uporaba |
|---|---|
DEBUG | Samo u debug-buildu, detaljne informacije o tijeku |
INFO | Normalne operacije, važni miljokazi |
WARN | Neočekivane ali obrađive situacije |
ERROR | Greške koje utječu na funkcionalnost |
Zabranjeno u logovima
(* ZABRANJENO - Osjetljivi podaci *) Logger.Info('User authenticated with token: %s', [Token]); Logger.Debug('Password: %s', [Password]); Logger.Info('API Key: %s', [ApiKey]); (* ISPRAVNO - Bez osjetljivih podataka *) Logger.Info('User %s authenticated successfully', [Username]); Logger.Debug('Processing request for user %s', [Username]);
Struktura projekta
[ ] Struktura projekta odgovara WvdS-baseline [ ] Build-konfiguracija ispravna [ ] Trijada dokumentacije postoji (README, API, CHANGELOG)
Brza kontrolna lista za kopiranje
Kontrolna lista pregleda (Core): Spremno za produkciju: - [ ] Nema TODO-komentara - [ ] Nema FIXME-komentara - [ ] Nema stub-funkcija - [ ] Nema mock-implementacija - [ ] Sve funkcije potpune Kvaliteta: - [ ] Nema dupliciranog koda (DRY) - [ ] Nema magičnih brojeva - [ ] Konzistentno formatiranje Rukovanje greškama: - [ ] Nema praznih except-blokova - [ ] Greške logirane prije obrade - [ ] Specifične prije općih iznimki - [ ] Resursi oslobođeni u finally Logiranje: - [ ] Nema osjetljivih podataka u logovima - [ ] Strukturirani format loga
Vidi također
Zuletzt geändert: 29.01.2026. u 22:26