====== 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 =====
* [[.:qualitaetssicherung|Pregled zagotavljanja kakovosti]]
* [[.:audit-sicherheit|Varnostni kontrolni seznam]]
* [[.:audit-codequalitaet|Kontrolni seznam kakovosti kode]]
* [[.:debugging|Razhroščevanje]]