meldestelle/docs/01_Architecture/adr/0023-domain-entity-naming-convention-de.md

2.6 KiB
Raw Blame History

type status date deciders
ADR ACCEPTED 2026-04-08 Lead Architect, Backend Developer

ADR-0023: Naming Convention für Domain-Entitäten (kein Dom-Präfix)

Status

ACCEPTED Umgesetzt in Session 2026-04-08 (Phase 1 & 2 Domain Clean-Up).

Kontext

In der frühen Entwicklungsphase wurden Domain-Klassen mit dem Präfix Dom versehen (z.B. DomBewerb, DomVeranstaltung, DomTurnier), um sie von DTOs und Datenbank-Entitäten zu unterscheiden. Diese Konvention hat sich als unnötig und verwirrend erwiesen, da sie gegen die Prinzipien der Ubiquitous Language (DDD) und der Clean Architecture verstößt.

Entscheidung

Domain-Entitäten tragen ab sofort ihren fachlichen Namen ohne Präfix.

Schicht Namenskonvention Beispiel
Domain <FachlicheName> Bewerb
Datenbank <FachlicheName>Table BewerbTable
Persistence <FachlicheName>Entity BewerbEntity
API/Transfer <FachlicheName>Dto BewerbDto

Durchgeführte Umbenennungen (Phase 1)

Alt (Dom-Präfix) Neu (Clean Name) Modul
DomBewerb Bewerb entries-domain
DomAbteilung Abteilung entries-domain
DomNennung Nennung entries-domain
DomNennungsTransfer NennungsTransfer entries-domain
DomTurnier Turnier events-domain
DomAusschreibung Ausschreibung events-domain
DomVeranstaltung Veranstaltung events-domain (bereits vorhanden, Duplikat gelöscht)

Konsequenzen

  • Positiv: Ubiquitous Language im Code Fachexperten und Entwickler sprechen dieselbe Sprache.
  • Positiv: Weniger kognitive Last kein mentales Mapping zwischen DomBewerb und Bewerb.
  • Positiv: Entspricht Clean Architecture die Domain-Schicht ist die "reine" Schicht.
  • Negativ: Einmalige Umbenennung erfordert Anpassung aller Referenzen (wurde systemweit durchgeführt).
  • Achtung: Datenbank-Migrationen (Flyway) und Repository-Mappings werden in Phase 3 separat behandelt.

Coding Guideline (verbindlich ab sofort)

Neue Domain-Klassen werden NIEMALS mit Dom, Model, Entity oder ähnlichen technischen Präfixen/Suffixen versehen. Der fachliche Name ist der Klassenname.

Ausnahmen: Datenbank-Klassen (...Table, ...Entity) und Transfer-Objekte (...Dto, ...Request, ...Response).