- 1 Section
- 10 Lessons
- unbegrenzt
- Entwicklungsumgebungen & Toolchain10
- 1.1IDEs im Vergleich: VS Code, IntelliJ, Eclipse, PyCharm
- 1.2Projektstruktur und Build-Tools: Maven, Gradle, npm
- 1.3Paketmanager: pip, npm, Maven Central
- 1.4Bibliotheken auswählen und bewerten
- 1.5Bestehende Anwendungen lesen, verstehen und anpassen
- 1.6Linter, Formatter und Codequalitätswerkzeuge
- 1.7Vorgehensmodelle in der Entwicklung: Scrum, Kanban, XP
- 1.8Code-Dokumentation: JavaDoc, Docstrings, OpenAPI
- 1.9Statische Codeanalyse und SonarQube
- 1.10Aufgaben Toolchain
Code-Dokumentation: JavaDoc, Docstrings, OpenAPI
Code wird mehr gelesen als geschrieben (vgl. L5). Gute Dokumentation macht den Unterschied zwischen „in 2 Stunden produktiv" und „in 2 Wochen verirrt". Aber: Dokumentation kann auch schlechter sein als gar keine – nämlich wenn sie veraltet ist.
Diese Lektion zeigt drei Doku-Welten: Inline-Code-Dokumentation (JavaDoc, Docstrings, JSDoc) für Funktionen und Klassen, API-Dokumentation (OpenAPI/Swagger) für REST-Schnittstellen und Projekt-Dokumentation (README, ARCHITECTURE.md) für das Big Picture. Plus: was ist gute vs. schlechte Doku?
1) Die Dokumentations-Pyramide
Wie bei Tests gibt es auch bei Doku verschiedene Ebenen. Von Detail zu Big-Picture:
2) Inline-Code-Doku-Formate je Sprache
Fast jede Sprache hat ein etabliertes Format für Funktions-Dokumentation. Klick durch:
3) Wichtige Tags in JavaDoc & Co.
Die meisten Doku-Formate kennen ähnliche Tags. Hier eine Übersicht:
| Tag | Bedeutung | Beispiel |
|---|---|---|
| @param | Beschreibt einen Parameter. | @param alter Alter in Jahren |
| @return | Beschreibt den Rückgabewert. | @return rabattierter Preis |
| @throws | Welche Exception kann fliegen? | @throws NullPointerException |
| @deprecated | Markiert als veraltet. | @deprecated nutze stattdessen X() |
| @since | Ab welcher Version verfügbar. | @since 1.2.0 |
| @see | Verweis auf andere Doku. | @see Customer#getName() |
| @author | Autor (selten genutzt heute). | @author A. Müller |
| @example | Beispiel-Aufruf (JSDoc). | @example calc(10, 20) |
4) OpenAPI / Swagger – die API-Doku-Welt
Wenn dein Code eine REST-API anbietet, brauchst du eine eigene Doku-Welt: OpenAPI (vorher „Swagger"). Eine YAML- oder JSON-Datei beschreibt deine API – aus ihr lassen sich generieren: Doku-Webseiten, Client-Bibliotheken, Mock-Server, Test-Suites.
5) Doku-Tools je Sprache
- JavaDoc:
mvn javadoc:javadocgeneriert HTML-Doku. - Sphinx (Python): generiert mächtige HTML-Doku, Standard für Bibliotheken wie Django, NumPy.
- TypeDoc / JSDoc: für TypeScript / JavaScript.
- Doxygen: der C/C++-Klassiker, unterstützt aber auch viele andere Sprachen.
- MkDocs: für Markdown-basierte Projekt-Doku.
- Docusaurus / VitePress: moderne Doku-Sites mit Versionierung und Suche.
- Swagger UI / Redoc: für OpenAPI-basierte API-Doku.
- Read the Docs: Hosting-Plattform speziell für technische Doku.
6) README – die erste Visitenkarte
Die README.md ist das Erste, was jeder Besucher eines Repos sieht. Sie entscheidet, ob jemand das Projekt verstehen oder weiterklicken wird. Eine gute README hat:
7) Architektur-Dokumentation
Bei größeren Projekten reicht README nicht. Eine ARCHITECTURE.md oder ähnlich erklärt die Strukturentscheidungen:
- Komponenten / Module: wie ist das System geschnitten?
- Datenfluss: wer ruft wen auf? Welche Daten gehen wohin?
- Externe Abhängigkeiten: welche Datenbank, welche APIs, welche Services?
- Diagramme: UML, Sequence-Diagrams (vgl. K50 L4).
Populär: C4-Model (Context, Container, Component, Code) – vier Zoom-Stufen vom System-Überblick bis zur Code-Ebene. Tool dafür: Structurizr.
8) ADRs – Architecture Decision Records
Eine clevere Idee aus der Praxis: ADRs dokumentieren warum bestimmte Architektur-Entscheidungen getroffen wurden. Format ist simpel:
- Titel: kurze Beschreibung der Entscheidung.
- Status: proposed / accepted / superseded.
- Kontext: warum stand die Entscheidung an?
- Entscheidung: was wurde entschieden?
- Konsequenzen: was bedeutet das für die Zukunft?
ADRs werden ins Repo committed (z.B. unter docs/adrs/0001-database-choice.md) und nie geändert – wenn eine Entscheidung überholt ist, kommt ein neues ADR und das alte wird auf „superseded" gesetzt. So wird das Erbe der Architektur-Entscheidungen sichtbar.
9) Gute vs. schlechte Doku
// erhöht i um 1 ist nutzlos – sagt nur was der Code tut. Warum erhöhen wir?// Skip first row (header) erklärt die Absicht, nicht die Mechanik.git blame und git log.10) Documentation-as-Code
Ein moderner Trend: Doku wird wie Code behandelt – im selben Repo, mit Versionierung, Pull Requests, Reviews. Vorteile:
- Synchronisation: Code-Änderung und Doku-Änderung im selben PR.
- Versionierung: Doku zu v1.0 unterscheidet sich von v2.0. Git macht das.
- Reviews: Doku-Änderungen werden wie Code reviewt.
- Tooling: Linter auch für Doku (Spell-Check, Markdownlint, Vale).
- CI-Integration: Doku wird automatisch deployed.
Klassische Tools: MkDocs, Docusaurus, VitePress, Sphinx. Hosting: GitHub Pages, Read the Docs, Netlify.
Zusammenfassung
Doku-Pyramide: Inline-Kommentare → Funktions-Doku → API-Doku → Architektur → README. Code-Doku: JavaDoc (Java, /** */), Docstrings (Python, """..."""), JSDoc (JS/TS), XML-Doc (C#). Standard-Tags: @param, @return, @throws, @deprecated. API-Doku: OpenAPI/Swagger (YAML), generiert Swagger UI + Client-SDKs. README: Titel, Install, Quickstart, Verwendung, Konfig. ADRs für Architektur-Entscheidungen. Documentation-as-Code: Doku im Repo, mit PRs, in CI deployed. Anti-Patterns: was statt warum, veraltet, Schreibroman, auskommentierter Code. Nächste Lektion: Statische Codeanalyse mit SonarQube.
