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