Skip to content

Collection d'Anti-patterns RxJS

RxJS est une bibliothèque puissante pour la programmation réactive, mais une utilisation incorrecte peut créer un terrain fertile pour les bugs et diminuer la maintenabilité. Cette section présente les erreurs courantes lors de l'utilisation de RxJS avec TypeScript et les meilleures pratiques pour les éviter.

Objectif de cette section

  • Prévenir les bugs : Comprendre les erreurs courantes à l'avance pour éviter les problèmes lors de l'implémentation
  • Améliorer la maintenabilité : Maîtriser des patterns de code lisibles et testables
  • Optimiser les performances : Apprendre des techniques pour prévenir les fuites mémoire et les traitements inutiles

Liste des anti-patterns

Cette section couvre 17 anti-patterns.

🔴 Problèmes critiques

Ces patterns peuvent avoir un impact sérieux sur votre application.

PatternProblèmeImpact
Exposition externe des SubjectsExposer directement un Subject permettant aux externes d'appeler next()Imprévisibilité de la gestion d'état, difficulté de débogage
Souscriptions imbriquéesAppeler subscribe à l'intérieur d'un autre subscribeCallback hell, complexité de gestion d'erreurs
Prolifération de drapeaux de gestion d'étatGérer l'état avec 17 drapeaux booléens, persistance de pensée impérativeFaible lisibilité, maintenance difficile, source de bugs
Imbrication if dans subscribeBranchements conditionnels complexes dans subscribe (3+ imbrications)Faible lisibilité, tests difficiles, contraire à la pensée déclarative
Oubli d'unsubscribeNe pas se désabonner des flux infinisFuites mémoire, gaspillage de ressources
Mauvaise utilisation de shareReplayUtiliser shareReplay sans comprendre son fonctionnementRéférence à des données périmées, fuites mémoire

🟡 Problèmes nécessitant attention

Ceux-ci peuvent poser problème dans certaines situations spécifiques.

PatternProblèmeImpact
Effets de bord dans mapModifier l'état dans l'opérateur mapComportement imprévisible, tests difficiles
Ignorer Cold/HotNe pas considérer la nature de l'ObservableExécutions en double, comportement inattendu
Mélange avec PromisesNe pas convertir correctement entre Promise et ObservableNon-annulable, gestion d'erreurs insuffisante
Ignorer le backpressureNégliger le contrôle des événements à haute fréquenceDégradation des performances, gel de l'UI

🔵 Problèmes de qualité de code

Ceux-ci ne sont pas des bugs directs mais réduisent la qualité du code.

PatternProblèmeImpact
Suppression d'erreursNe pas gérer correctement les erreursDébogage difficile, expérience utilisateur dégradée
Fuites d'événements DOMNe pas libérer les écouteurs d'événements DOMFuites mémoire, dégradation des performances
Manque de sécurité de typeUtilisation excessive de anyErreurs au runtime, refactoring difficile
Sélection d'opérateur inappropriéeUtiliser un opérateur inadapté à l'objectifInefficacité, comportement inattendu
Complexification excessiveComplexifier des traitements qui pourraient être simplesFaible lisibilité, maintenance difficile
Enfer du one-linerMélange de définition de flux, transformation et souscriptionDébogage difficile, tests difficiles, faible lisibilité
Modification d'état dans subscribeModifier directement l'état dans subscribeTests difficiles, source de bugs
Absence de testsNe pas écrire de tests pour le code RxJSRégression, refactoring difficile

Comment progresser dans l'apprentissage

  1. Étudier en détail les 15 anti-patterns dans Erreurs courantes et solutions
  2. Chaque anti-pattern comprend des exemples de code "mauvais" et "bons"
  3. Réviser votre code avec la Checklist d'évitement des anti-patterns
  4. Mettre en pratique les meilleures pratiques et les partager au sein de l'équipe

Sections connexes

Après avoir appris les anti-patterns, consultez également les sections suivantes.

Prochaines étapes

  1. Commencez par Erreurs courantes et solutions pour apprendre les anti-patterns pratiques et leurs solutions.
  2. Après l'apprentissage, révisez votre code actuel avec la Checklist d'évitement des anti-patterns.

Important : Ces anti-patterns sont fréquemment rencontrés dans les projets réels. Les comprendre tôt vous permettra d'écrire du code RxJS de haute qualité.

Publié sous licence CC-BY-4.0.