Deja de crear funciones que nadie quiere tocar 🛑
Seguro conoces esa función en tu proyecto. Esa que empezó como una validación simple y terminó siendo un monstruo de 200 líneas con if-else anidados. Es la función que los seniors advierten a los juniors durante el onbo
Artículo
Una lectura sobre tecnología y sistemas digitales, escrita para ir al punto y dejar claras las ideas principales.
Tema principal
arquitectura de software
Fuente
dev.to
Puntos clave
- Seguro conoces esa función en tu proyecto. Esa que empezó como una validación simple y terminó siendo un monstruo de 200 líneas con if-else anidados.
- Es la función que los seniors advierten a los juniors durante el onboarding: "No la toques a menos que sea estrictamente necesario".
- El problema no es la complejidad del negocio, sino la falta de estructura. Cuando amontonamos reglas en un solo lugar, creamos un cuello de botella frágil donde un cambio pequeño puede romper flujos inesperados.
- La solución es el patrón Chain of Responsibility.
Bloque 1
Seguro conoces esa función en tu proyecto. Esa que empezó como una validación simple y terminó siendo un monstruo de 200 líneas con if-else anidados.
Es la función que los seniors advierten a los juniors durante el onboarding: "No la toques a menos que sea estrictamente necesario".
Bloque 2
El problema no es la complejidad del negocio, sino la falta de estructura. Cuando amontonamos reglas en un solo lugar, creamos un cuello de botella frágil donde un cambio pequeño puede romper flujos inesperados.
La solución es el patrón Chain of Responsibility.
Bloque 3
En lugar de un método que lo sabe todo, creamos una cadena de manejadores especializados. Cada uno tiene una única misión: procesar la solicitud o pasarla al siguiente.
¿Por qué esto cambia las reglas del juego en producción?
Bloque 4
• Responsabilidad Única: Cada clase maneja una sola regla (ej. Validación de Fraude). Si la regla cambia, solo tocas una clase. • Configurabilidad Total: Puedes añadir, eliminar o reordenar pasos de la validación sin modificar el código de los manejadores existentes. • Desacoplamiento Real: Quien inicia la petición no sabe cuántos pasos hay ni quién los procesa; solo dispara el inicio de la cadena.
Pasar de un "God Method" a una cadena de responsabilidad no es solo limpiar código, es diseñar para el cambio.
Bloque 5
¿Ustedes cómo gestionan reglas de negocio complejas? ¿Prefieren Chain of Responsibility o suelen delegar esto a un motor de reglas externo?