Skip to content

Checkliste zur Vermeidung von Anti-Patterns

Verwenden Sie diese Checkliste, um Ihren RxJS-Code auf Anti-Patterns zu überprüfen. Klicken Sie auf jeden Punkt, um eine detaillierte Erklärung und Beispielcode zu erhalten.

Checkliste

🔴 Kritische Probleme vermeiden

CheckPunktHinweis
Subject über asObservable() veröffentlichenSubject nicht direkt exportieren, sondern als Observable über asObservable() bereitstellen
Zustandsänderungen nur über dedizierte Methoden ermöglichen
Verschachtelte subscribe vermeidenKein weiteres subscribe innerhalb eines subscribe aufrufen
Mit switchMap, mergeMap, concatMap etc. flach machen
Unendliche Streams immer abbestellenUnendliche Streams wie Event-Listener immer abbestellen
takeUntil-Muster oder Subscription-Verwaltung
shareReplay-Einstellungen explizit angebenFormat shareReplay({ bufferSize: 1, refCount: true }) verwenden
Referenzzählung aktivieren um Memory-Leaks zu verhindern
Verschachtelte if-Anweisungen in subscribe vermeidenKomplexe Verzweigungen (3+ Verschachtelungen) in subscribe vermeiden
Deklarativ mit filter, iif, partition etc. schreiben

🟡 Probleme die Aufmerksamkeit erfordern

CheckPunktHinweis
map ist reine Funktion, Seiteneffekte in tapIn map keine Zustandsänderungen oder Log-Ausgaben
Seiteneffekte explizit mit tap-Operator trennen
Cold/Hot richtig unterscheidenHTTP-Requests etc. mit shareReplay in Hot umwandeln
Entscheiden ob pro Subscription oder geteilt ausführen
Promise mit from konvertierenPromise und Observable nicht mischen
Mit from() in Observable konvertieren und einheitlich verarbeiten
Hochfrequente Events kontrollierenSucheingabe mit debounceTime, Scrollen mit throttleTime kontrollieren
Duplikate mit distinctUntilChanged ausschließen

🔵 Verbesserung der Codequalität

CheckPunktHinweis
Fehler richtig behandelnFehler mit catchError abfangen und richtig verarbeiten
Benutzerfreundliche Fehlermeldungen anzeigen
Bei Bedarf mit retry / retryWhen wiederholen
DOM-Events richtig freigebenfromEvent-Subscriptions immer beenden
Bei Komponenten-Zerstörung automatisch mit takeUntil abbestellen
Typsicherheit gewährleistenInterfaces und Type-Aliase definieren
Typparameter für Observable<T> explizit angeben
TypeScript-Typinferenz nutzen
Passende Operatoren wählenSuche: switchMap, parallel: mergeMap
Sequentiell: concatMap, Doppelklick-Schutz: exhaustMap
Einfache Verarbeitung braucht kein RxJSArray-Verarbeitung etc. reicht normales JavaScript
RxJS für asynchrone Verarbeitung und Event-Streams verwenden
Zustand reaktiv verwaltenZustand mit BehaviorSubject oder scan verwalten
subscribe als finalen Trigger verwenden
Tests schreibenMarble-Tests mit TestScheduler durchführen
Asynchrone Verarbeitung synchron testbar machen

Verwendung

1. Bei Code-Reviews

Nach dem Schreiben von neuem Code diese Checkliste für Selbst-Reviews nutzen.

2. Bei Pull Requests

Diese Checkliste in Pull-Request-Vorlagen einbinden für gemeinsame Überprüfungskriterien.

3. Regelmäßige Überprüfung

Diese Checkliste regelmäßig auf bestehende Codebasen anwenden um Anti-Pattern-Einschleichung zu erkennen.

4. Team-Sharing

Mit Teammitgliedern teilen um RxJS Best Practices zu vereinheitlichen.

Verwandte Ressourcen

Tipps zur Checklisten-Nutzung

  1. Nicht alle Punkte auf einmal perfekt machen wollen

    • Zuerst kritische Probleme (🔴) priorisieren
    • Schrittweise verbessern
  2. Prioritäten im Team festlegen

    • Wichtigkeit je nach Projekteigenschaften anpassen
    • Angepasste Checklisten erstellen
  3. Automatisierung erwägen

    • Automatische Checks mit statischen Analysetools wie ESLint
    • In CI/CD-Pipeline integrieren
  4. Regelmäßig aktualisieren

    • Bei RxJS-Versions-Upgrades aktualisieren
    • Team-Erfahrungswissen einarbeiten

Wichtig: Diese Checkliste dient nicht dem Schreiben von perfektem Code, sondern der Vermeidung häufiger Probleme. Bitte je nach Projektkontext flexibel einsetzen.

Veröffentlicht unter CC-BY-4.0-Lizenz.