58 lines
2.6 KiB
Markdown
58 lines
2.6 KiB
Markdown
---
|
||
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** | `<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`).
|