Simyl
simylflow
Kursübersicht
Modul 4: Teampraktiken
Lektion 3 von 5
10 Min.

Coding Standards

Vereinbarte Konventionen, die Reibung reduzieren und kollektives Eigentum ermöglichen.

1Warum Standards wichtig sind

Coding Standards sind Teamvereinbarungen darüber, wie Code geschrieben werden soll:

  • Namenskonventionen (camelCase vs snake_case)
  • Formatierung (Tabs vs Leerzeichen, Platzierung von Klammern)
  • Code-Organisation (Dateistruktur, Modulgrenzen)
  • Muster (wie mit Fehlern umgegangen wird, wie Tests strukturiert werden)

Standards ermöglichen kollektives Eigentum. Wenn Code überall gleich aussieht, kann jeder jeden Code lesen. Es gibt keine „Übersetzung" zwischen Bobs Stil und Alices Stil.

Standards reduzieren auch Reibung im Code-Review. Anstatt über Formatierung zu diskutieren, besprecht ihr Logik und Design. Das Bikeshedding entfällt.

Ohne Standards: Jede Datei fühlt sich anders an. Der Wechsel zwischen Modulen erfordert mentales Kontextwechseln. Code-Review wird zum Stilkrieg.

Mit Standards: Die Codebasis fühlt sich einheitlich an. Das Lesen von unbekanntem Code ist einfacher. Reviews konzentrieren sich auf das Wesentliche.

Der spezifische Standard ist weniger wichtig als überhaupt einen Standard zu haben. Wählt etwas Vernünftiges und bleibt dabei.

2Standards vs. Stil

Nicht alle Konventionen sind gleich. Unterscheidet zwischen:

Semantische Standards: Beeinflussen Codeverhalten oder Wartbarkeit

  • Fehlerbehandlungsmuster
  • Logging-Konventionen
  • Teststruktur
  • API-Design-Muster

Stilistische Standards: Beeinflussen nur das Erscheinungsbild

  • Formatierung (Einrückung, Zeilenlänge)
  • Benennung (camelCase vs snake_case)
  • Klammerplatzierung

Semantische Standards verdienen Diskussion. Wie das Team mit Fehlern umgeht, ist eine bedeutsame Entscheidung mit echten Konsequenzen.

Stilistische Standards sollten automatisiert werden. Nutzt Prettier, Black, gofmt – Tools, die Code automatisch formatieren. Verschwendet keine menschliche Zeit mit Tabs vs. Leerzeichen.

Das Ziel ist, Reibung zu beseitigen, nicht ein platonisches Ideal von Code-Stil zu erreichen.

3Automatisierte Durchsetzung

Moderne Tools können die meisten Standards automatisch durchsetzen:

Formatierer: Prettier (JavaScript), Black (Python), gofmt (Go), rustfmt (Rust)

  • Laufen beim Speichern oder als Pre-Commit-Hook
  • Eliminieren Formatierungsdiskussionen vollständig

Linter: ESLint, Pylint, Clippy, RuboCop

  • Erkennen Stilverstöße und potenzielle Bugs
  • Konfigurierbar nach Teampräferenzen
  • Laufen in CI, um nicht-konformen Code am Mergen zu hindern

Type Checker: TypeScript, mypy, Flow

  • Erzwingen Typkonsistenz
  • Fangen Fehler vor der Laufzeit ab

Pre-Commit-Hooks: Husky, pre-commit

  • Führen Prüfungen vor dem Commit aus
  • Fangen Probleme ab, bevor sie ins Repository gelangen

Einmal konfigurieren, für immer durchsetzen. Verlasst euch nicht auf menschliche Disziplin – automatisiert es.

Gute Standards-Durchsetzung

Das Team nutzt Prettier mit einer gemeinsamen Konfiguration. Jeder Commit löst Formatierung aus. Code-Review erwähnt nie Formatierung – es konzentriert sich nur auf Logik und Design.

Manuelle Standards-Durchsetzung

Das Team hat einen 50-seitigen Style Guide. Reviewer verbringen die Hälfte ihrer Zeit damit, auf Stilverstöße hinzuweisen. Entwickler ärgern sich über die Kleinlichkeit. Neue Teammitglieder haben Schwierigkeiten, all die Regeln zu lernen.

4Standards etablieren ohne Glaubenskriege

Standards können starke Meinungen auslösen. Vermeidet endlose Debatten:

Beginnt mit bestehenden Konventionen. Wenn die Sprache oder das Framework einen Standardstil hat (Go, Rust), nutzt ihn einfach. Erfindet nichts neu.

Nutzt Industriestandards. Beliebte Linter-/Formatierer-Konfigurationen (Airbnb ESLint, Google Style Guide) sind kampferprobt.

Entscheidet schnell, passt später an. Wählt etwas Vernünftiges. Wenn es sich als problematisch erweist, ändert es. Blockiert den Fortschritt nicht, während ihr auf den perfekten Standard wartet.

Macht es demokratisch, aber entscheidungsfreudig. Lasst das Team über kontroverse Themen abstimmen. Die Mehrheit gewinnt. Die Minderheit akzeptiert die Entscheidung.

Erinnert euch an das Ziel. Standards existieren, um Reibung zu reduzieren, nicht um Präferenzen auszudrücken. Wenn eine Diskussion zu lange dauert, ist jede vernünftige Wahl in Ordnung.

Nicht vorzeitig optimieren

Eine Woche damit zu verbringen, über Semikolons zu debattieren, ist keine gute Zeitnutzung. Wählt einen Formatierer und macht weiter.

5Lebendige Dokumentation

Standards sollten dokumentiert werden – aber haltet sie lebendig:

Was dokumentiert werden sollte:

  • Semantische Standards (wie mit Fehlern umgegangen wird, Testmuster)
  • Begründung für nicht-offensichtliche Entscheidungen (warum wir X statt Y gewählt haben)
  • Ausnahmen und wann Regeln gebrochen werden dürfen
  • Wie Änderungen vorgeschlagen werden

Wo dokumentiert werden sollte:

  • README oder CONTRIBUTING-Datei im Repository
  • Wiki oder Team-Dokumentationsbereich
  • Kommentare in der Linter-/Formatierer-Konfiguration

Haltet es aktuell. Veraltete Dokumentation ist schlimmer als keine Dokumentation. Wenn ihr einen Standard ändert, aktualisiert die Dokumentation.

Macht es auffindbar. Neue Teammitglieder sollten die Standards leicht finden. Vergrabt sie nicht in einem Wiki-Labyrinth.

Die beste Dokumentation ist der Code selbst. Wenn eure Standards automatisch durchgesetzt werden, demonstriert der Code, was akzeptabel ist.

Wichtige Erkenntnisse
  • Standards ermöglichen kollektives Eigentum, indem sie allen Code lesbar machen
  • Automatisiert stilistische Durchsetzung – verschwendet keine menschliche Zeit mit Formatierung
  • Semantische Standards (Muster, Fehlerbehandlung) verdienen Diskussion
  • Wählt schnell vernünftige Standards; lasst Debatten nicht den Fortschritt blockieren
  • Dokumentiert Standards und haltet die Dokumentation aktuell
Häufige Fehler, die es zu vermeiden gilt
  • Endlose Debatten über Formatierung (automatisiert es stattdessen)
  • Manuelle Durchsetzung, die Review-Zeit verschwendet
  • Standards in „schnellen Fixes" ignorieren, die dauerhaft werden
  • Veraltete Dokumentation, die nicht der Realität entspricht

Praxisübungen