--- type: ADR status: ACCEPTED date: 2026-04-08 deciders: 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** | `` | `Bewerb` | | **Datenbank** | `Table` | `BewerbTable` | | **Persistence** | `Entity` | `BewerbEntity` | | **API/Transfer**| `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`).