Anti-patroon Preventie Checklist
Gebruik deze checklist om te controleren of je RxJS code anti-patronen bevat. Klik op elk item voor gedetailleerde uitleg en codevoorbeelden.
Checklist Items
🔴 Vermijd Ernstige Problemen
| Check | Item | Punt |
|---|---|---|
| Subject publiceren met asObservable() | Exporteer Subject niet direct, maar publiceer als Observable met asObservable()Statuswijzigingen alleen mogelijk maken via toegewijde methoden | |
| Vermijd geneste subscribe | Roep geen andere subscribe aan binnen een subscribeMaak plat met switchMap, mergeMap, concatMap, etc. | |
| Oneindige streams altijd opzeggen | Oneindige streams zoals event listeners altijd opzeggentakeUntil patroon of Subscription beheer | |
| shareReplay instellingen expliciet maken | Gebruik shareReplay({ bufferSize: 1, refCount: true }) formaatActiveer reference counting om geheugenlekken te voorkomen | |
| Vermijd if-statement nesting in subscribe | Vermijd complexe voorwaardelijke vertakkingen binnen subscribe (3 of meer niveaus nesten)Schrijf declaratief met operators zoals filter, iif, partition |
🟡 Vermijd Problemen die Aandacht Vereisen
| Check | Item | Punt |
|---|---|---|
| map is pure functie, bijwerkingen in tap | Wijzig geen status of log output binnen mapSchei bijwerkingen expliciet af met tap operator | |
| Juiste gebruik van Cold/Hot | Converteer HTTP requests etc. naar Hot met shareReplayBepaal of het bij elke subscribe moet worden uitgevoerd of gedeeld | |
| Converteer Promise met from | Meng Promise en Observable niet Converteer naar Observable met from() voor uniforme verwerking | |
| Beheers hoogfrequente events | Beheers zoekinvoer met debounceTime, scrollen met throttleTimeElimineer duplicaten met distinctUntilChanged |
🔵 Verbeter Codekwaliteit
| Check | Item | Punt |
|---|---|---|
| Behandel fouten correct | Vang fouten op met catchError en behandel ze correctToon begrijpelijke foutmeldingen aan gebruikers Probeer opnieuw met retry / retryWhen indien nodig | |
| Geef DOM events correct vrij | Zeg subscriptions van fromEvent altijd opAutomatisch opzeggen bij component vernietiging met takeUntil | |
| Zorg voor type-veiligheid | Definieer interfaces of type aliases Specificeer Observable<T> type parametersMaak gebruik van TypeScript type inferentie | |
| Selecteer juiste operators | Zoeken: switchMap, parallel: mergeMapSequentieel: concatMap, dubbelklik preventie: exhaustMap | |
| Eenvoudige verwerking vereist geen RxJS | Array verwerking etc. is voldoende met gewone JavaScript Gebruik RxJS voor asynchrone verwerking of event streams | |
| Beheer status reactief | Beheer status met BehaviorSubject of scanGebruik subscribe als uiteindelijke trigger | |
| Schrijf tests | Voer marble tests uit met TestSchedulerMaak asynchrone verwerking synchroon testbaar |
Hoe te Gebruiken
1. Bij Code Review
Na het schrijven van nieuwe code, voer een zelf-review uit met deze checklist.
2. Bij Pull Requests
Door deze checklist in het pull request template op te nemen, kunnen reviewers en jij controleren met gemeenschappelijke standaarden.
3. Periodieke Herziening
Gebruik deze checklist periodiek voor je bestaande codebase om te controleren of er geen anti-patronen zijn binnengeslopen.
4. Delen binnen Team
Deel met teamleden en unificeer RxJS best practices.
Gerelateerde Bronnen
- Veelvoorkomende Fouten en Oplossingen - Gedetailleerde uitleg en codevoorbeelden van elk anti-patroon
- Anti-patronen Collectie Top - Lijst van anti-patronen en hoe te leren
- Foutafhandeling - Best practices voor foutafhandeling
- Testmethoden - Hoe RxJS code te testen
Tips voor Checklist Gebruik
Probeer niet alle items tegelijk perfect te maken
- Behandel eerst de ernstige problemen (🔴)
- Verbeter stapsgewijs
Bepaal prioriteiten binnen het team
- Pas het belang aan volgens projectkenmerken
- Maak een aangepaste checklist
Overweeg automatisering
- Automatische controle met statische analysetools zoals ESLint
- Integreer in CI/CD pipeline
Update regelmatig
- Update volgens RxJS versie-upgrades
- Reflecteer inzichten verkregen uit teamervaring
Belangrijk: Deze checklist is niet bedoeld om perfecte code te schrijven, maar als gids om veelvoorkomende problemen te vermijden. Gebruik flexibel volgens de context van je project.