Skip to content

Lista de Verificación para Evitar Anti-patrones

Use esta lista de verificación para asegurarse de que su código RxJS no caiga en ningún anti-patrón. Haga clic en cada elemento para ver explicaciones detalladas y ejemplos de código.

Elementos de la Lista de Verificación

🔴 Evitar Problemas Críticos

VerificarElementoPuntos Clave
Publicar Subject con asObservable()No exportar Subject directamente, publicarlo como Observable con asObservable()
Permitir cambios de estado solo a través de métodos dedicados
Evitar subscribe anidadoNo llamar otro subscribe dentro de subscribe
Aplanar con switchMap, mergeMap, concatMap, etc.
Siempre desuscribirse de streams infinitosSiempre desuscribirse de streams infinitos como event listeners
Patrón takeUntil o gestión de Subscription
Configurar explícitamente shareReplayUsar la forma shareReplay({ bufferSize: 1, refCount: true })
Habilitar el conteo de referencias para prevenir fugas de memoria
Evitar sentencias if anidadas dentro de subscribeEvitar ramificación condicional compleja (3 o más niveles anidados) dentro de subscribe
Escribir declarativamente con operadores como filter, iif, partition

🟡 Evitar Problemas que Requieren Atención

VerificarElementoPuntos Clave
map es función pura, efectos secundarios en tapNo cambiar el estado ni mostrar logs dentro de map
Separar explícitamente los efectos secundarios con el operador tap
Usar Cold/Hot apropiadamenteConvertir solicitudes HTTP a Hot con shareReplay
Determinar si la ejecución debe ocurrir por suscripción o ser compartida
Convertir Promise con fromNo mezclar Promise y Observable
Convertir a Observable con from() para procesamiento unificado
Controlar eventos de alta frecuenciaControlar entrada de búsqueda con debounceTime, desplazamiento con throttleTime
Excluir duplicados con distinctUntilChanged

🔵 Mejorar la Calidad del Código

VerificarElementoPuntos Clave
Manejar errores apropiadamenteCapturar errores con catchError y manejar apropiadamente
Mostrar mensajes de error amigables para el usuario
Reintentar con retry / retryWhen según sea necesario
Liberar eventos DOM correctamenteSiempre desuscribirse de suscripciones fromEvent
Desuscribirse automáticamente con takeUntil cuando el componente se destruye
Asegurar la seguridad de tiposDefinir interfaces y alias de tipos
Especificar explícitamente parámetros de tipo Observable<T>
Aprovechar la inferencia de tipos de TypeScript
Elegir operadores apropiadosBúsqueda: switchMap, paralelo: mergeMap
Secuencial: concatMap, prevenir doble clic: exhaustMap
El procesamiento simple no necesita RxJSJavaScript regular es suficiente para procesamiento de arrays, etc.
Usar RxJS para procesamiento asíncrono y streams de eventos
Gestionar el estado reactivamenteGestionar el estado con BehaviorSubject o scan
Usar subscribe como disparador final
Escribir pruebasImplementar marble testing con TestScheduler
Hacer que el procesamiento asíncrono sea testeable de forma síncrona

Cómo Usar

1. Durante la Revisión de Código

Después de escribir código nuevo, realice una auto-revisión usando esta lista de verificación.

2. Durante Pull Requests

Incluya esta lista de verificación en su plantilla de pull request para que los revisores puedan verificar con criterios comunes.

3. Revisiones Regulares

Use esta lista de verificación regularmente contra su base de código existente para verificar anti-patrones.

4. Compartir Dentro del Equipo

Comparta con los miembros del equipo para unificar las mejores prácticas de RxJS.

Recursos Relacionados

Consejos para Usar la Lista de Verificación

  1. No intente perfeccionar todos los elementos a la vez

    • Primero, priorice los problemas críticos (🔴)
    • Mejore paso a paso
  2. Establezca prioridades dentro del equipo

    • Ajuste la importancia según las características del proyecto
    • Cree listas de verificación personalizadas
  3. Considere la automatización

    • Automatice verificaciones con herramientas de análisis estático como ESLint
    • Integre en el pipeline CI/CD
  4. Actualizaciones regulares

    • Actualice según las actualizaciones de versión de RxJS
    • Refleje las ideas de la experiencia del equipo

Importante: Esta lista de verificación no es para escribir código perfecto, sino una guía para evitar problemas comunes. Úsela de forma flexible según el contexto de su proyecto.

Publicado bajo licencia CC-BY-4.0.