Core-Checkliste

Merge-Gate - Diese Checkliste wird bei jeder Änderung angewendet.

Code mit Verstößen gegen diese Checkliste wird nicht akzeptiert.

Production-Ready (Zero Tolerance)

Verbotene Patterns

Verboten Erforderlich
// TODO: Kommentare Vollständige Implementierung
// FIXME: Kommentare Behobener Code
Stub-Funktionen Echte Implementierungen
Mock-Implementierungen Produktionscode
Placeholder-Werte Echte Werte
raise ENotImplemented Funktionierender Code

Checkliste

[ ] Keine TODO-Kommentare im Produktionscode
[ ] Keine FIXME-Kommentare im Produktionscode
[ ] Keine Stub- oder Placeholder-Funktionen
[ ] Keine Mock-Implementierungen
[ ] Jede Funktion vollständig implementiert
[ ] Alle Fehlerfälle behandelt
[ ] Alle Randfälle abgedeckt

Allgemeine Qualität

[ ] Kein duplizierter Code (DRY-Prinzip)
[ ] Keine Magic Numbers (benannte Konstanten verwenden)
[ ] Konsistente Formatierung in der gesamten Datei
[ ] Alle öffentlichen Methoden haben aussagekräftige Fehlermeldungen

Beispiel: Magic Numbers

(* VERBOTEN - Magic Number *)
if Length(Name) > 64 then
  raise EValidationError.Create('Name too long');
 
(* KORREKT - Benannte Konstante *)
const
  MAX_NAME_LENGTH = 64;
 
if Length(Name) > MAX_NAME_LENGTH then
  raise EValidationError.Create(Format(rsNameTooLong, [MAX_NAME_LENGTH]));

Error Handling Baseline

[ ] Keine leeren catch/except-Blöcke
[ ] Fehler werden geloggt BEVOR sie behandelt werden
[ ] Spezifische Exceptions vor allgemeinen
[ ] Stack-Trace bei Re-Throw erhalten
[ ] Ressourcen deterministisch freigegeben (try-finally)

Beispiel: Korrektes Error Handling

(* VERBOTEN - Leerer Exception-Handler *)
try
  DoSomething;
except
  // Nichts tun - VERBOTEN!
end;
 
(* VERBOTEN - Allgemeine Exception zuerst *)
try
  DoSomething;
except
  on E: Exception do         // Zu allgemein!
    HandleError(E);
  on E: EFileNotFound do     // Wird nie erreicht!
    HandleFileNotFound(E);
end;
 
(* KORREKT - Spezifisch, geloggt, Ressourcen freigegeben *)
var
  Resource: TResource;
begin
  Resource := TResource.Create;
  try
    try
      DoSomething;
    except
      on E: EFileNotFound do
      begin
        Logger.Error(rsFileNotFound, [E.Message]);  (* Erst loggen *)
        raise;  (* Dann weiterwerfen - Stack-Trace erhalten *)
      end;
      on E: EAccessDenied do
      begin
        Logger.Error(rsAccessDenied, [E.Message]);
        raise;
      end;
    end;
  finally
    Resource.Free;  (* IMMER freigeben *)
  end;
end;

Logging Baseline

[ ] Logging-Format und -Verbosity folgen Policy
[ ] Keine Secrets oder sensible Daten in Logs
[ ] Strukturiertes Format: [Timestamp] [Level] [Source] Message

Log-Level Richtlinien

Level Verwendung
DEBUG Nur im Debug-Build, detaillierte Ablaufinfos
INFO Normale Operationen, wichtige Meilensteine
WARN Unerwartete aber behandelbare Situationen
ERROR Fehler die Funktionalität beeinträchtigen

Verboten in Logs

(* VERBOTEN - Sensible Daten *)
Logger.Info('User authenticated with token: %s', [Token]);
Logger.Debug('Password: %s', [Password]);
Logger.Info('API Key: %s', [ApiKey]);
 
(* KORREKT - Keine sensiblen Daten *)
Logger.Info('User %s authenticated successfully', [Username]);
Logger.Debug('Processing request for user %s', [Username]);

Projektstruktur

[ ] Projektstruktur entspricht WvdS-Baseline
[ ] Build-Konfiguration korrekt
[ ] Dokumentations-Triade existiert (README, API, CHANGELOG)

Schnell-Checkliste zum Kopieren

Review-Checkliste (Core):

Production-Ready:
- [ ] Keine TODO-Kommentare
- [ ] Keine FIXME-Kommentare
- [ ] Keine Stub-Funktionen
- [ ] Keine Mock-Implementierungen
- [ ] Alle Funktionen vollständig

Qualität:
- [ ] Kein duplizierter Code (DRY)
- [ ] Keine Magic Numbers
- [ ] Konsistente Formatierung

Error Handling:
- [ ] Keine leeren except-Blöcke
- [ ] Fehler vor Behandlung geloggt
- [ ] Spezifische vor allgemeinen Exceptions
- [ ] Ressourcen in finally freigegeben

Logging:
- [ ] Keine sensiblen Daten in Logs
- [ ] Strukturiertes Log-Format

Siehe auch

Zuletzt geändert: den 29.01.2026 um 15:13