Ahora me encuentro con la integración de un contenedor de inversión de control (IoC) en una aplicación existente, y estoy buscando algunas recomendaciones sobre cómo se puede lograr más fácilmente con el objetivo final de reducir el acoplamiento, lo que aumenta la capacidad de prueba. Aunque generalmente no clasificaría la mayoría de las clases como objetos divinos , cada una tiene demasiadas responsabilidades y dependencias ocultas a través de estadísticas, elementos únicos y falta de interfaces.
Aquí hay algunos antecedentes de algunos de los desafíos que deben enfrentarse:
- La inyección de dependencia se usa con poca frecuencia
- Abundan los métodos estáticos, tanto como métodos de fábrica como de ayuda.
- Los singletons son bastante frecuentes
- Las interfaces, cuando se usan, no son demasiado granulares
- Los objetos a menudo atraen dependencias innecesarias a través de clases base
Nuestra intención es que la próxima vez que necesitemos hacer cambios en un área en particular, tratemos de descifrar las dependencias que, en realidad, existen pero que están ocultas detrás de los globales, como los singletons y las estadísticas.
Supongo que eso hace que el contenedor de IoC sea secundario a la introducción de la inyección de dependencias, pero esperaría que haya un conjunto de prácticas y recomendaciones que podrían seguirse o considerarse que nos ayudarán a romper estas dependencias.