Jedrovni kontrolni seznam

Vrata za združitev - Ta kontrolni seznam se uporabi pri vsaki spremembi.

Koda s kršitvami tega kontrolnega seznama ne bo sprejeta.

Pripravljeno za produkcijo (brez tolerance)

Prepovedani vzorci

Prepovedano Zahtevano
// TODO: komentarji Popolna implementacija
// FIXME: komentarji Popravljena koda
Stub funkcije Prave implementacije
Mock implementacije Produkcijska koda
Nadomestne vrednosti Prave vrednosti
raise ENotImplemented Delujoča koda

Kontrolni seznam

[ ] Brez TODO komentarjev v produkcijski kodi
[ ] Brez FIXME komentarjev v produkcijski kodi
[ ] Brez stub ali nadomestnih funkcij
[ ] Brez mock implementacij
[ ] Vsaka funkcija popolnoma implementirana
[ ] Vsi primeri napak obdelani
[ ] Vsi robni primeri pokriti

Splošna kakovost

[ ] Brez podvojene kode (načelo DRY)
[ ] Brez čarobnih številk (uporaba poimenovanih konstant)
[ ] Konsistentno oblikovanje v celotni datoteki
[ ] Vse javne metode imajo smiselna sporočila o napakah

Primer: Čarobne številke

(* PREPOVEDANO - Čarobna številka *)
if Length(Name) > 64 then
  raise EValidationError.Create('Name too long');
 
(* PRAVILNO - Poimenovana konstanta *)
const
  MAX_NAME_LENGTH = 64;
 
if Length(Name) > MAX_NAME_LENGTH then
  raise EValidationError.Create(Format(rsNameTooLong, [MAX_NAME_LENGTH]));

Osnovna obravnava napak

[ ] Brez praznih catch/except blokov
[ ] Napake se zabeležijo PREDEN se obdelajo
[ ] Specifične izjeme pred splošnimi
[ ] Sled sklada ohranjena ob ponovnem metu
[ ] Viri se deterministično sprostijo (try-finally)

Primer: Pravilna obravnava napak

(* PREPOVEDANO - Prazen obdelovalec izjem *)
try
  DoSomething;
except
  // Ne naredi nič - PREPOVEDANO!
end;
 
(* PREPOVEDANO - Splošna izjema prva *)
try
  DoSomething;
except
  on E: Exception do         // Preveč splošno!
    HandleError(E);
  on E: EFileNotFound do     // Nikoli ne bo doseženo!
    HandleFileNotFound(E);
end;
 
(* PRAVILNO - Specifično, zabeleženo, viri sproščeni *)
var
  Resource: TResource;
begin
  Resource := TResource.Create;
  try
    try
      DoSomething;
    except
      on E: EFileNotFound do
      begin
        Logger.Error(rsFileNotFound, [E.Message]);  (* Najprej zabeleži *)
        raise;  (* Potem ponovno vrzi - sled sklada ohranjena *)
      end;
      on E: EAccessDenied do
      begin
        Logger.Error(rsAccessDenied, [E.Message]);
        raise;
      end;
    end;
  finally
    Resource.Free;  (* VEDNO sprosti *)
  end;
end;

Osnovno beleženje

[ ] Oblika in podrobnost beleženja sledita politiki
[ ] Brez skrivnosti ali občutljivih podatkov v dnevnikih
[ ] Strukturirana oblika: [Časovni žig] [Raven] [Vir] Sporočilo

Smernice ravni dnevnika

Raven Uporaba
DEBUG Samo v razhroščevalni gradnji, podrobne informacije o poteku
INFO Normalne operacije, pomembni mejniki
WARN Nepričakovane a obvladljive situacije
ERROR Napake, ki vplivajo na funkcionalnost

Prepovedano v dnevnikih

(* PREPOVEDANO - Občutljivi podatki *)
Logger.Info('User authenticated with token: %s', [Token]);
Logger.Debug('Password: %s', [Password]);
Logger.Info('API Key: %s', [ApiKey]);
 
(* PRAVILNO - Brez občutljivih podatkov *)
Logger.Info('User %s authenticated successfully', [Username]);
Logger.Debug('Processing request for user %s', [Username]);

Struktura projekta

[ ] Struktura projekta sledi WvdS osnovi
[ ] Gradbena konfiguracija pravilna
[ ] Dokumentacijska triada obstaja (README, API, CHANGELOG)

Hitri kontrolni seznam za kopiranje

Kontrolni seznam pregleda (Core):

Pripravljeno za produkcijo:
- [ ] Brez TODO komentarjev
- [ ] Brez FIXME komentarjev
- [ ] Brez stub funkcij
- [ ] Brez mock implementacij
- [ ] Vse funkcije popolne

Kakovost:
- [ ] Brez podvojene kode (DRY)
- [ ] Brez čarobnih številk
- [ ] Konsistentno oblikovanje

Obravnava napak:
- [ ] Brez praznih except blokov
- [ ] Napake zabeležene pred obravnavo
- [ ] Specifične pred splošnimi izjemami
- [ ] Viri sproščeni v finally

Beleženje:
- [ ] Brez občutljivih podatkov v dnevnikih
- [ ] Strukturirana oblika dnevnika

Glejte tudi

Zuletzt geändert: dne 29.01.2026 ob 22:27