Skip to content

Colección de Anti-Patrones de RxJS

RxJS es una poderosa biblioteca de programación reactiva, pero cuando se usa incorrectamente, puede ser un caldo de cultivo para errores y mantenibilidad reducida. En esta sección, presentaremos algunos errores comunes al usar RxJS con TypeScript y las mejores prácticas para evitarlos.

Propósito de esta sección

  • Prevenir errores: evitar problemas de implementación comprendiendo los errores comunes antes de que ocurran
  • Mejorar la Mantenibilidad: aprender patrones de código que sean fáciles de leer y probar
  • Optimizar el rendimiento: aprender técnicas para evitar fugas de memoria y procesamiento innecesario

Lista de anti-patrones

Esta sección cubre los siguientes 17 anti-patrones.

🔴 Problemas Críticos

Estos patrones pueden tener un impacto grave en su aplicación.

PatrónProblemaImpacto
Publicación externa de SubjectPublicar el Subject tal cual, y hacer posible llamar next() desde el exteriorImprevisibilidad de la gestión del estado, difícil de depurar
Subscribe anidadoLlamar más subscribe en subscribeCallback hell, complicación del manejo de errores
Proliferación desenfrenada de flags de gestión de estadoGestión del estado con 17 flags booleanos, el pensamiento imperativo aún permaneceBaja legibilidad, difícil de mantener, semillero de errores
Anidamiento de sentencias if en subscribeRamificación condicional compleja (anidamiento de 3 o más niveles) en subscribeBaja legibilidad, difícil de probar, viola la filosofía declarativa
Olvido de unsubscribeNo cancelar la suscripción a streams infinitosFuga de memoria, desperdicio de recursos
Mal uso de shareReplayUsar sin comprender cómo funciona shareReplayReferencias a datos antiguos, fugas de memoria

🟡 Problemas que Requieren Atención

Estos pueden ser problemas en ciertas situaciones.

PatrónProblemaImpacto
Efectos secundarios en mapCambiar el estado en el operador mapComportamiento impredecible, difícil de probar
Ignorar Cold/HotNo considerar la naturaleza del ObservableEjecución duplicada, comportamiento inesperado
Mezcla con PromiseNo convertir Promise y Observable correctamenteNo cancelable, mal manejo de errores
Ignorar backpressureNo controlar eventos de alta frecuenciaDegradación del rendimiento, congelamiento de la UI

🔵 Problemas de Calidad del Código

Estos no son errores directos, pero son factores que reducen la calidad del código.

PatrónProblemaImpacto
Supresión de erroresNo manejar los errores correctamenteDificultades de depuración, mala experiencia del usuario
Fugas de eventos DOMNo liberar los event listeners del DOMFugas de memoria, degradación del rendimiento
Falta de seguridad de tiposUso excesivo de anyErrores en tiempo de ejecución, dificultades de refactorización
Selección impropia de operadoresUso de operadores que no sirven al propósitoIneficiencia, comportamiento inesperado
SobrecomplicaciónComplicar un proceso que puede escribirse de forma simpleBaja legibilidad, difícil de mantener
Infierno de one-linerDefiniciones de streams, conversiones y suscripciones mezcladasDifícil de depurar, difícil de probar, baja legibilidad
Cambios de estado en subscribeCambio de estado directamente en subscribeDifícil de probar, causa errores
Falta de pruebasNo hay pruebas escritas para el código RxJSRegresión, dificultades de refactorización

Cómo proceder con el estudio

  1. Aprender 15 anti-patrones en detalle en Errores Comunes y Cómo Corregirlos
  2. Cada anti-patrón tiene un "ejemplo malo" y un "ejemplo bueno" de código
  3. Revisar su código con Lista de Verificación para Evitar Anti-patrones
  4. Practicar las mejores prácticas y compartirlas con su equipo

Secciones Relacionadas

Después de aprender sobre anti-patrones, consulte también las siguientes secciones.

Próximos Pasos

  1. Comience con Errores Comunes y Cómo Corregirlos para aprender anti-patrones prácticos y sus soluciones.
  2. Después de aprender, revise su código real con la Lista de Verificación para Evitar Anti-patrones.

IMPORTANTE: Estos anti-patrones se encuentran frecuentemente en proyectos reales. Comprenderlos tempranamente le ayudará a escribir código RxJS de calidad.

Publicado bajo licencia CC-BY-4.0.