====== 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 =====
* [[.:qualitaetssicherung|Pregled osiguranja kvalitete]]
* [[.:audit-sicherheit|Sigurnosna kontrolna lista]]
* [[.:audit-codequalitaet|Kontrolna lista kvalitete koda]]
* [[.:debugging|Debugging]]