Nell'ultimo anno, ho creato un nuovo sistema utilizzando Dependency Injection e un container IOC. Questo mi ha insegnato molto su DI!
Tuttavia, anche dopo aver appreso i concetti e gli schemi appropriati, ritengo sia una sfida disaccoppiare il codice e introdurre un contenitore IOC in un'applicazione legacy. L'applicazione è abbastanza grande al punto che una vera implementazione sarebbe schiacciante. Anche se il valore è stato compreso e il tempo è stato concesso. A chi è concesso tempo per qualcosa di simile ??
L'obiettivo, naturalmente, è portare i test unitari alla logica aziendale!
Logica di business che si intreccia con le chiamate al database che impediscono il test.
Ho letto gli articoli e capisco i pericoli della Dipendenza da Iniezione di Poor Man come descritto in questo articolo di Los Techies . Capisco che veramente non disaccoppia nulla.
Capisco che possa coinvolgere molto il refactoring del sistema poiché le implementazioni richiedono nuove dipendenze. Non prenderei in considerazione l'utilizzo su un nuovo progetto con qualsiasi dimensione.
Domanda: Va bene usare DI di Poor Man per introdurre testabilità su un'applicazione legacy e avviare il lancio?
Inoltre, sta utilizzando il DI di Poor Man come approccio di base alla vera Iniezione di dipendenza, un modo valido per educare alla necessità e ai benefici del principio?
È possibile refactoring un metodo che ha una dipendenza di chiamata database e abstract che chiama dietro un'interfaccia? Il semplice fatto di avere quell'astrazione renderebbe quel metodo testabile dal momento che un'implementazione simulata potrebbe essere passata attraverso un overload di costruttore.
Lungo la strada, una volta che lo sforzo guadagna sostenitori, il progetto potrebbe essere aggiornato per implementare un container IOC e i costruttori sarebbero là fuori a prendere le astrazioni.