Fai sapere che sono un grande fan dell'iniezione di dipendenza (DI) e dei test automatizzati. Potrei parlarne tutto il giorno.
sfondo
Di recente, il nostro team ha appena ricevuto questo grande progetto che deve essere costruito da zero. È un'applicazione strategica con requisiti aziendali complessi. Certo, volevo che fosse bello e pulito, il che per me significava: mantenibile e testabile. Quindi volevo usare DI.
Resistenza
Il problema era nel nostro team, DI è un tabù. È stato allevato alcune volte, ma gli dei non approvano. Ma questo non mi ha scoraggiato.
La mia mossa
Questo può sembrare strano ma le librerie di terze parti di solito non sono approvate dal nostro team di architetti (pensa: "non parlerai di Unity , Ninject , NHibernate , Moq o NUnit , per evitare che ti tagli il dito"). Quindi, invece di utilizzare un contenitore DI stabilito, ho scritto un contenitore estremamente semplice. Fondamentalmente ha cablato tutte le tue dipendenze all'avvio, inietta tutte le dipendenze (costruttore / proprietà) e ha eliminato tutti gli oggetti usa e getta alla fine della richiesta web. Era estremamente leggero e faceva proprio quello di cui avevamo bisogno. E poi ho chiesto loro di esaminarlo.
La risposta
Bene, per farla breve. Ho incontrato una forte resistenza. L'argomento principale era "Non è necessario aggiungere questo livello di complessità a un progetto già complesso". Inoltre, "Non è che inseriremo diverse implementazioni di componenti". E "Vogliamo mantenerlo semplice, se possibile semplicemente racchiudere tutto in un unico assieme. DI è una complessità non necessaria senza alcun vantaggio".
Infine, la mia domanda
Come gestiresti la mia situazione? Non sono bravo a presentare le mie idee e vorrei sapere come le persone avrebbero presentato le loro argomentazioni.
Certo, presumo che, come me, tu preferisca usare DI. Se non sei d'accordo, per favore dì perché così posso vedere l'altro lato della medaglia. Sarebbe davvero interessante vedere il punto di vista di qualcuno che non è d'accordo.
Aggiornare
Grazie per le risposte di tutti. Mette davvero le cose in prospettiva. È abbastanza carino avere un altro paio di occhi per darti un feedback, quindici è davvero fantastico! Queste sono risposte davvero fantastiche e mi hanno aiutato a vedere il problema da diverse parti, ma posso scegliere solo una risposta, quindi sceglierò solo la prima votata. Grazie a tutti per il tempo dedicato a rispondere.
Ho deciso che probabilmente non è il momento migliore per implementare DI, e non siamo pronti per questo. Invece, concentrerò i miei sforzi nel rendere testabile il progetto e tenterò di presentare test di unità automatizzati. Sono consapevole che scrivere test è un sovraccarico aggiuntivo e se mai si decide che l'overhead aggiuntivo non ne vale la pena, personalmente lo vedrei ancora come una situazione vincente poiché il design è ancora testabile. E se mai testare o DI è una scelta in futuro, il design può facilmente gestirlo.