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
| Verificar | Elemento | Puntos 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 anidado | No llamar otro subscribe dentro de subscribeAplanar con switchMap, mergeMap, concatMap, etc. | |
| Siempre desuscribirse de streams infinitos | Siempre desuscribirse de streams infinitos como event listeners Patrón takeUntil o gestión de Subscription | |
| Configurar explícitamente shareReplay | Usar la forma shareReplay({ bufferSize: 1, refCount: true })Habilitar el conteo de referencias para prevenir fugas de memoria | |
| Evitar sentencias if anidadas dentro de subscribe | Evitar ramificación condicional compleja (3 o más niveles anidados) dentro de subscribeEscribir declarativamente con operadores como filter, iif, partition |
🟡 Evitar Problemas que Requieren Atención
| Verificar | Elemento | Puntos Clave |
|---|---|---|
| map es función pura, efectos secundarios en tap | No cambiar el estado ni mostrar logs dentro de mapSeparar explícitamente los efectos secundarios con el operador tap | |
| Usar Cold/Hot apropiadamente | Convertir solicitudes HTTP a Hot con shareReplayDeterminar si la ejecución debe ocurrir por suscripción o ser compartida | |
| Convertir Promise con from | No mezclar Promise y Observable Convertir a Observable con from() para procesamiento unificado | |
| Controlar eventos de alta frecuencia | Controlar entrada de búsqueda con debounceTime, desplazamiento con throttleTimeExcluir duplicados con distinctUntilChanged |
🔵 Mejorar la Calidad del Código
| Verificar | Elemento | Puntos Clave |
|---|---|---|
| Manejar errores apropiadamente | Capturar errores con catchError y manejar apropiadamenteMostrar mensajes de error amigables para el usuario Reintentar con retry / retryWhen según sea necesario | |
| Liberar eventos DOM correctamente | Siempre desuscribirse de suscripciones fromEventDesuscribirse automáticamente con takeUntil cuando el componente se destruye | |
| Asegurar la seguridad de tipos | Definir interfaces y alias de tipos Especificar explícitamente parámetros de tipo Observable<T>Aprovechar la inferencia de tipos de TypeScript | |
| Elegir operadores apropiados | Búsqueda: switchMap, paralelo: mergeMapSecuencial: concatMap, prevenir doble clic: exhaustMap | |
| El procesamiento simple no necesita RxJS | JavaScript regular es suficiente para procesamiento de arrays, etc. Usar RxJS para procesamiento asíncrono y streams de eventos | |
| Gestionar el estado reactivamente | Gestionar el estado con BehaviorSubject o scanUsar subscribe como disparador final | |
| Escribir pruebas | Implementar marble testing con TestSchedulerHacer 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
- Errores Comunes y Cómo Corregirlos - Explicaciones detalladas y ejemplos de código para cada anti-patrón
- Inicio de Colección de Anti-Patrones - Lista de anti-patrones y cómo aprender
- Manejo de Errores - Mejores prácticas de manejo de errores
- Técnicas de Prueba - Cómo probar el código RxJS
Consejos para Usar la Lista de Verificación
No intente perfeccionar todos los elementos a la vez
- Primero, priorice los problemas críticos (🔴)
- Mejore paso a paso
Establezca prioridades dentro del equipo
- Ajuste la importancia según las características del proyecto
- Cree listas de verificación personalizadas
Considere la automatización
- Automatice verificaciones con herramientas de análisis estático como ESLint
- Integre en el pipeline CI/CD
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.