====== 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]]