Durante una revisione del codice ho iniziato ad avere un po 'di dilemma se usare o meno l'iniezione di dipendenza. Mi piacerebbe sentire i tuoi pensieri, perché questo è una specie di tema in corso e sarebbe di aiuto anche per le future recensioni del codice.
Prima di iniziare, voglio dire che, dal mio punto di vista, DI viene utilizzato principalmente per la gestione delle dipendenze e per un test dell'unità più semplice e molto più semplice (correggimi se sbaglio per favore).
Ora ecco lo scenario:
Questa è la classe che verrà utilizzata come dipendenza solo una volta e probabilmente per sempre. Significa che rimarrà così per un po 'e nessun'altra classe lo userà.
L'essere di ragione è perché è un refactoring di qualche codice legacy e non c'era molto da fare, ma per separarlo in un'altra classe, almeno come primo buon passo, per seguire SRP .
Inoltre, un'altra cosa è che l'ipotetico doSomethingImportant () colpisce il database.
public SomeClass
{
public Object doSomethingImportant()
{
...
}
}
Sulla base di queste informazioni pensi che sia giusto reinventare la dipendenza nell'altra classe invece di usare DI da:
il tipo di argomento della gestione delle dipendenze cade poiché verrà utilizzato solo una volta.
&
Anche il test delle unità cade poiché preferirei fare un test di integrazione o di accettazione per vedere come il metodo sta interagendo con il database in un'applicazione reale.
public SomeOtherClass
{
private readonly SomeClass _someClass = new SomeClass();
public Object doSomethingImportantUsingDependency()
{
...
}
}
Personalmente ero incline a fare DI perché è considerato una buona pratica, ma per un secondo ho sentito che stavo seguendo accecamente le regole e non ci pensavo da quando ci sono sempre delle eccezioni alla regola.
Che cosa pensi di questo? Mi piacerebbe sentire.
PS: non penso che sia una domanda generica "quando dovrei usare DI" perché è molto specifica per questa particolare situazione quando i test unitari non servono e la classe verrà usata solo una volta così non è necessario centralizzarlo per la gestione delle dipendenze (anche se è una buona pratica in generale).