Me considero un programador experimentado y entiendo el concepto básico de inyección de dependencia. Por otro lado, la mayor parte de mi experiencia se basa en escribir un número relativamente bajo, un código numérico de un solo hombre. No tengo ninguna experiencia trabajando en grandes proyectos empresariales.Marcos de inyección de dependencia: ¿Cómo funcionan?
Dado este trasfondo, no puedo por la vida de entender por qué alguien necesitaría un marco para hacer la inyección de dependencia. ¿Puede alguien darme una breve descripción de cómo funciona un marco así, sin entrar en muchos detalles, y explicar cómo hace la vida más fácil que solo hacer los suyos?
Editar: He recibido algunas buenas respuestas aquí. ¿Estoy en lo cierto al decir que un marco de DI básicamente te brinda una manera conveniente de crear fábricas accesibles globalmente que crean/devuelven instancias de dependencias cada vez que un objeto las solicita? Si es así, he estado haciendo cosas como esta de forma muy ad hoc en mi código todo el tiempo, pero nunca pensé usar ningún tipo de marco formal/pesado para ello.
Estoy aceptando esto porque responde mi pregunta. Sin embargo, busqué y leí un poco sobre Guice y todavía soy escéptico sobre si configurarlo es realmente más fácil o menos frágil que simplemente escribir unas pocas funciones/clases de fábrica y/o tener algunas banderas de configuración almacenadas de la manera adecuada para lo que estás tratando de lograr. – dsimcha
Lo veo como una mejora de esos patrones, ya que también resuelve la dependencia de las clases de fábrica. También es menos codificante, con una simple anotación creas fábricas enteras. Por lo tanto, menos errores. – Kdeveloper
Cuanto más lo pienso, más creo que un marco DI puede ser conveniente. Es algo que usaría si estuviera en la lib estándar, y haría la vida ligeramente más fácil, pero no algo para lo que me metiera con dependencias de terceros. Mi idioma principal es D, soy desarrollador de su biblioteca estándar y las funciones de metaprogramación de D'son bastante buenas, así que estoy pensando a medias en escribir un marco DI muy simple y liviano (como en un módulo) para incluirlo en el D estándar lib. – dsimcha