Convert PocketBase dates to Berlin time; document code conventions

This commit is contained in:
tleininger committed 2026-09-24 08:53:47 +02:00
1 parent 4b93434679
commit aef05fb090
11 files changed
+406 -129

No files matched your search

+32 -2
View File
@@ -83,11 +83,41 @@ Inhalt liegt in PocketBase (`pb_data`), das separat gesichert wird (siehe
- Datenzugriff über den typisierten `PocketBaseClient` (registriert via
`AddHttpClient`), der pro Request liest — kein Start-Cache, kein Singleton mit
Inhalten. Komponenten liegen feature-basiert unter `Features/<Bereich>/`.
- Öffentliche Typen und Methoden im `PocketBaseClient` und in `Contracts`
bekommen XML-Doc (auf Englisch, leicht verständlich), Razor-Markup nicht.
- **Code durchgängig auf Englisch** — Typen, Member, Variablen, Kommentare,
Skripte und Doku. Das gilt **auch für Domänenbegriffe**: im Code `Event`, nicht
`Termin`; `Post`, nicht `Beitrag`. Deutsch bleibt ausschließlich, was ein
Besucher liest oder ein Redakteur pflegt: UI-Texte sowie die **Werte** der
PocketBase-Records (z. B. `title: Vorstandsteam`, der Markdown-`body`). Die
Feldnamen und Slugs bleiben dagegen englisch (`title`, `slug`, `/board`).
## Coding Convention
- **Ausdruckskörper (`=>`) sind Pflicht, wo syntaktisch möglich** — Methoden,
Properties, Konstruktoren, Operatoren, lokale Funktionen. Ein `if/else`, das
einen Wert liefert, wird zum ternären Ausdruck oder zur `switch`-Expression, kein
Block-Körper mit `return`. Ein Block-Körper nur, wo ein Ausdruck sprachlich nicht
geht (mehrere Anweisungen ohne Rückgabe, `ref`/`out`, `yield`).
- Ternäre und `switch`-Expressions dürfen dafür mehrzeilig umgebrochen werden;
Lesbarkeit entsteht durch Einrückung, nicht durch einen Block.
- Nullable aktiv nutzen: `?`, `??`, `??=` statt Nullprüfungen im Block. Ein
ungültiger `null`-Fall wird als Ausdruck geworfen (`?? throw new …`).
- Argumente/Rückgaben früh und knapp validieren, bevorzugt als Ausdruck.
## Documentation Convention
Vorbild ist `Elternbeirat.PocketBase/LocalDateTimeConverter.cs` — daran
ausrichten.
- **Jeder öffentliche (`public`/`protected`) Typ und Member bekommt XML-Doc** —
nicht nur `PocketBaseClient` und `Contracts`. Interne Helfer, die Teil der
fachlichen Erklärung sind (wie `WallClock`), ebenfalls. Razor-Markup nicht.
- Voller Umfang, wo zutreffend: `<summary>`, dazu `<param>`, `<returns>`,
`<exception>` (jede geworfene Bedingung), `<remarks>` für Kontext/Fallstricke,
`<example>` mit `<code>` für nicht offensichtliche Nutzung, `<seealso>` auf
verwandte Typen. `<inheritdoc/>` bei Interface-/Basis-Implementierungen.
- Code im Text als Markup referenzieren, nicht als Prosa: `<see cref="…"/>`,
`<see langword="null"/>`/`<see langword="false"/>`, `<c>…</c>` für Literale.
- Einrückung: der Textinhalt steht mit vier Leerzeichen unter dem `///`-Tag
(`/// Text`), Tags sauber verschachtelt.
- Englisch, leicht verständlich, erklärt **warum**, nicht was der Code ohnehin
zeigt.