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