Cuando uso un componente basado en eventos, a menudo siento algo de dolor en la fase de mantenimiento.
Dado que el código ejecutado está dividido, puede ser bastante difícil imaginar cuál será la parte del código que estará involucrada en el tiempo de ejecución.
Esto puede conducir a problemas sutiles y difíciles de depurar cuando alguien agrega algunos controladores de eventos nuevos.
Editar a partir de los comentarios: incluso con algunas buenas prácticas a bordo, como tener un bus de eventos para toda la aplicación y controladores que delegan negocios a otra parte de la aplicación, hay un momento en que el código comienza a ser difícil de leer porque hay muchos manejadores registrados de muchos lugares diferentes (especialmente cierto cuando hay un autobús).
Luego, el diagrama de secuencia comienza a verse complejo, el tiempo dedicado a darse cuenta de lo que está sucediendo aumenta y la sesión de depuración se vuelve desordenada (punto de interrupción en el administrador de controladores mientras se itera en los controladores, especialmente alegre con el controlador asíncrono y algunos filtros encima).
//////////////
Ejemplo
Tengo un servicio que está recuperando algunos datos en el servidor. En el cliente tenemos un componente básico que llama a este servicio mediante una devolución de llamada. Para proporcionar un punto de extensión a los usuarios del componente y evitar el acoplamiento entre diferentes componentes, estamos activando algunos eventos: uno antes de que se envíe la consulta, uno cuando la respuesta regresa y otro en caso de falla. Tenemos un conjunto básico de controladores prerregistrados que proporcionan el comportamiento predeterminado del componente.
Ahora los usuarios del componente (y nosotros también somos usuarios del componente) pueden agregar algunos controladores para realizar algún cambio en el comportamiento (modificar la consulta, los registros, el análisis de datos, el filtrado de datos, el masaje de datos, la animación sofisticada de la interfaz de usuario, la cadena de consultas secuenciales múltiples , lo que sea). Por lo tanto, algunos controladores deben ejecutarse antes / después de otros y deben registrarse desde muchos puntos de entrada diferentes en la aplicación.
Después de un tiempo, puede suceder que una docena o más de controladores estén registrados, y trabajar con eso puede ser tedioso y peligroso.
Este diseño surgió porque el uso de la herencia comenzaba a ser un completo desastre. El sistema de eventos se utiliza en una especie de composición en la que aún no sabes cuáles serán tus compuestos.
Fin del ejemplo
//////////////
Así que me pregunto cómo otras personas están abordando este tipo de código. Tanto al escribir como al leerlo.
¿Tiene algún método o herramienta que le permita escribir y mantener dicho código sin demasiado esfuerzo?