Como usted dice, los eventos son una gran herramienta para reducir el acoplamiento entre clases; por lo tanto, si bien puede implicar escribir código adicional en algunos idiomas sin soporte integrado para eventos, reduce la complejidad del panorama general.
Podría decirse que los eventos son una de las herramientas más importantes en OO (según Alan Kay: los objetos se comunican enviando y recibiendo mensajes ). Si usa un lenguaje que tiene soporte incorporado para eventos, o trata las funciones como ciudadanos de primera clase, entonces usarlos es obvio.
Incluso en idiomas sin soporte incorporado, la cantidad de repeticiones para algo como el patrón de Observer es bastante mínima. Es posible que pueda encontrar una biblioteca de eventos genérica decente en algún lugar que pueda usar en todas sus aplicaciones para minimizar la repetitiva. (Un agregador de eventos genérico o un mediador de eventos es útil en casi cualquier tipo de aplicación).
¿Vale la pena en una pequeña aplicación? Definitivamente diría que sí .
- Mantener las clases desacopladas entre sí mantiene limpio el gráfico de dependencia de clase.
- Las clases sin dependencias concretas se pueden probar de forma aislada sin tener en cuenta otras clases en las pruebas.
- Las clases sin dependencias concretas requieren menos pruebas unitarias para una cobertura completa.
Si está pensando "Oh, pero en realidad es solo una aplicación muy pequeña, realmente no importa tanto" , considere:
- Las aplicaciones pequeñas a veces terminan combinándose con aplicaciones más grandes más adelante.
- Es probable que las aplicaciones pequeñas incluyan al menos algunas lógicas o componentes que más tarde deberán reutilizarse en otras aplicaciones.
- Los requisitos para aplicaciones pequeñas pueden cambiar, lo que provoca la necesidad de refactorizar, lo que es más fácil cuando el código existente se desacopla.
- Se pueden agregar características adicionales más adelante, lo que provoca la necesidad de extender el código existente, que también es mucho más fácil cuando el código existente ya está desacoplado.
- El código débilmente acoplado generalmente no toma mucho más tiempo para escribir que el código fuertemente acoplado; pero el código estrechamente acoplado tarda mucho más en refactorizarse y probarse que el código débilmente acoplado.
En general, el tamaño de una aplicación no debe ser un factor decisivo para mantener las clases unidas libremente; Los principios SÓLIDOS no son solo para grandes aplicaciones, sino que se aplican a software y bases de código a cualquier escala.
De hecho, el tiempo ahorrado en la unidad que prueba sus clases sueltamente acopladas de forma aislada debería contrarrestar cualquier tiempo adicional dedicado a desacoplar esas clases.