Que se sepa que soy un gran admirador de la inyección de dependencia (DI) y las pruebas automatizadas. Podría hablar todo el día al respecto.
Antecedentes
Recientemente, nuestro equipo acaba de recibir este gran proyecto que se construirá desde cero. Es una aplicación estratégica con requisitos comerciales complejos. Por supuesto, quería que fuera agradable y limpio, lo que para mí significaba: mantenible y comprobable. Entonces quería usar DI.
Resistencia
El problema estaba en nuestro equipo, DI es tabú. Se ha mencionado varias veces, pero los dioses no lo aprueban. Pero eso no me desanimó.
Mi movimiento
Esto puede sonar extraño, pero las bibliotecas de terceros generalmente no están aprobadas por nuestro equipo de arquitectos (piense: "no hablarás de Unity , Ninject , NHibernate , Moq o NUnit , para que no te corte el dedo"). Entonces, en lugar de usar un contenedor DI establecido, escribí un contenedor extremadamente simple. Básicamente conectó todas sus dependencias al inicio, inyecta cualquier dependencia (constructor / propiedad) y eliminó los objetos desechables al final de la solicitud web. Era extremadamente liviano e hizo lo que necesitábamos. Y luego les pedí que lo revisaran.
La respuesta
Bueno, para abreviar. Me encontré con una fuerte resistencia. El argumento principal fue: "No necesitamos agregar esta capa de complejidad a un proyecto ya complejo". Además, "No es como si conectaremos diferentes implementaciones de componentes". Y "Queremos que sea simple, si es posible, simplemente coloque todo en un solo ensamblaje. DI es una complejidad innecesaria sin beneficio".
Finalmente mi pregunta
¿Cómo manejarías mi situación? No soy bueno para presentar mis ideas, y me gustaría saber cómo la gente presentaría sus argumentos.
Por supuesto, supongo que, como yo, prefieres usar DI. Si no está de acuerdo, explique por qué para que pueda ver el otro lado de la moneda. Sería realmente interesante ver el punto de vista de alguien que no está de acuerdo.
Actualizar
Gracias por las respuestas de todos. Realmente pone las cosas en perspectiva. Es lo suficientemente bueno como para tener otro par de ojos que te den retroalimentación, ¡quince es realmente increíble! Estas son respuestas realmente geniales y me ayudaron a ver el problema desde diferentes lados, pero solo puedo elegir una respuesta, por lo que elegiré la que haya sido votada mejor. Gracias a todos por tomarse el tiempo para responder.
He decidido que probablemente no sea el mejor momento para implementar DI, y no estamos preparados para ello. En cambio, concentraré mis esfuerzos en hacer que el diseño sea comprobable e intentaré presentar pruebas unitarias automatizadas. Soy consciente de que escribir pruebas es una sobrecarga adicional y si alguna vez se decide que la sobrecarga adicional no vale la pena, personalmente aún lo vería como una situación ganadora, ya que el diseño aún es comprobable. Y si alguna vez la prueba o DI es una opción en el futuro, el diseño puede manejarlo fácilmente.