# Entwicklungsstandards Allgemein gültige Standards für die Arbeit in diesem Repository. --- ## Sprache - **Code-Bezeichner** (Variablen, Funktionen, Klassen, Dateinamen): Englisch - **Domänenobjekte** (z. B. `Pflanze`, `Beet`, `Aussaatkalender`): Deutsch erlaubt, wenn es die Lesbarkeit erhöht - **Commit-Messages**: Englisch, Imperativ (`Add`, `Fix`, `Refactor`) - **Dokumentation & Kommentare**: Deutsch --- ## Git ### Branching ``` main – stabiler Produktionsstand feature/ – neue Features fix/ – Bugfixes chore/ – Wartung, Abhängigkeiten, Konfiguration ``` ### Commit-Messages Format: `: ` (max. 72 Zeichen) | Type | Wann | |---|---| | `feat` | Neues Feature | | `fix` | Bugfix | | `refactor` | Code-Umbau ohne Verhaltensänderung | | `test` | Tests hinzufügen/anpassen | | `docs` | Nur Dokumentation | | `chore` | Build, Dependencies, Konfiguration | Beispiel: `feat: add watering schedule to plant detail view` --- ## Code-Qualität - Keine auskommentierten Code-Blöcke committen - Keine `console.log` / `print`-Statements in Produktionscode - Funktionen bleiben klein und haben eine einzige Verantwortung - Keine spekulativen Abstraktionen – erst abstrahieren, wenn ein Muster dreimal vorkommt --- ## Testing - Unit-Tests für Geschäftslogik (Berechnungen, Transformationen) - Integrationstests an Systemgrenzen (API, Datenbank) - Keine Mocks für die Datenbank in Integrationstests - Testdatei liegt neben der zu testenden Datei oder in einem `__tests__`/`tests`-Verzeichnis auf gleicher Ebene --- ## Fehlerbehandlung - Fehler nur an Systemgrenzen abfangen (User-Input, externe APIs, Datenbankzugriff) - Intern Fehler propagieren, nicht still schlucken - Keine Fallbacks für Szenarien, die nicht eintreten können --- ## Abhängigkeiten - So wenig externe Abhängigkeiten wie möglich - Vor dem Hinzufügen einer Bibliothek prüfen: Wird sie wirklich gebraucht? - `package.json` / Lockfile immer committen