This commit is contained in:
br committed 2026-06-18 08:38:37 +02:00
commit 5126decf36
4 files changed
+341

No files matched your search

+131
View File
@@ -0,0 +1,131 @@
# Strukturelle Vorgaben – Quellcode-Konventionen
Dieses Dokument legt verbindliche Konventionen für alle Quelldateien im Projekt fest.
---
## 1. Datei-Header
Jede Quelldatei beginnt mit einem standardisierten Header. Der Header dient gleichzeitig als Modul-Docstring und wird von **Sphinx** zur automatischen Dokumentationserzeugung ausgewertet (Python-Äquivalent zu JavaDoc).
### Python (`.py`)
Der Header ist ein Modul-Docstring (triple-quoted) direkt am Dateianfang. Sphinx liest ihn automatisch aus:
```python
"""
<Einzeiliger Titel des Moduls>
<Optionale längere Beschreibung, was dieses Modul leistet, welche
Klassen/Funktionen es exportiert und welche Abhängigkeiten es hat.>
:author: Vorname Nachname <email@beispiel.de>
:date: YYYY-MM-DD
:version: 1.0
"""
```
Pflichtfelder: `:author:`, `:date:`
Optionale Felder: `:version:`, `:see:`, `:note:`
### Jinja2 / HTML (`.html`)
Jinja2-Kommentare (`{# ... #}`) werden vom Browser nicht gerendert und sind deshalb die richtige Wahl für Template-Header:
```html
{#
Datei: templates/beispiel.html
Autor: Vorname Nachname <email@beispiel.de>
Datum: YYYY-MM-DD
Zweck: Kurze Beschreibung, welche Seite/Komponente dieses Template rendert
und welche Jinja2-Variablen es erwartet.
#}
```
Pflichtfelder: `Datei:`, `Autor:`, `Datum:`, `Zweck:`
---
## 2. Dokumentationserzeugung mit Sphinx
Python bietet mit **Sphinx** ein mächtiges Werkzeug analog zu JavaDoc. Es liest Modul-Docstrings (inkl. `:author:`/`:date:`-Felder) und erzeugt daraus eine vollständige HTML-Dokumentation.
### Einrichtung (einmalig)
```bash
pip install sphinx
cd docs/
sphinx-quickstart # Interaktiver Setup-Assistent
```
Im Setup-Assistenten:
- `autodoc` aktivieren (liest Docstrings automatisch)
- Projektname, Autor und Version eingeben
Anschließend in `docs/conf.py` sicherstellen:
```python
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.viewcode", # Links zum Quellcode
]
```
### Dokumentation aus dem `app/`-Verzeichnis einlesen
```bash
sphinx-apidoc -o docs/source/ app/
```
Dieser Befehl scannt alle `.py`-Dateien unter `app/` und erzeugt `.rst`-Stub-Dateien, die den Modul-Docstring und alle Klassen/Funktionen einbinden.
### Dokumentation bauen
```bash
cd docs/
make html
# Ergebnis liegt unter: docs/_build/html/index.html
```
### Ablauf
```
Modul-Docstrings → sphinx-apidoc → .rst-Dateien → make html → HTML-Doku
```
> **Hinweis:** Für HTML-Templates gibt es kein Python-natives Doku-Tool. Die Header-Kommentare dienen dort als Inline-Dokumentation für Entwickler.
---
## 3. Template-Dateien
Im Verzeichnis [`_templates/`](_templates/) liegen Vorlagen, von denen sich der Entwickler **jederzeit eine frische Kopie ziehen** kann:
| Template | Verwendung |
|---|---|
| [`_templates/_template.py`](_templates/_template.py) | Neue Python-Quelldatei |
| [`_templates/_template.html`](_templates/_template.html) | Neues Jinja2/HTML-Template |
### Workflow: neue Datei aus Template erzeugen
```bash
# Python-Datei
cp _templates/_template.py app/mein_modul.py
# HTML-Template
cp _templates/_template.html app/templates/meine_seite.html
```
Anschließend im kopierten File die Platzhalter (`<...>`) ersetzen.
---
## 4. Kurzreferenz – Pflichtfelder auf einen Blick
| Feldname | Python (Docstring) | HTML (Kommentar) | Pflicht |
|---|---|---|---|
| Autor | `:author:` | `Autor:` | Ja |
| Datum | `:date:` | `Datum:` | Ja |
| Zweck/Titel | Erste Docstring-Zeile | `Zweck:` | Ja |
| Version | `:version:` | – | Nein |
| Dateiname | – | `Datei:` | Ja |