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