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

58 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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`).