Sono ora di fronte all'integrazione di un contenitore di inversione di controllo (IoC) in un'applicazione esistente e sto cercando alcuni consigli su come realizzare più facilmente l'obiettivo finale di ridurre l'accoppiamento, aumentando così la testabilità. Anche se generalmente non classificherei la maggior parte delle classi come oggetti divini , ognuna ha troppe responsabilità e dipendenze nascoste attraverso statica, caratteri singolari e mancanza di interfacce.
Ecco un po 'di background alcune delle sfide che devono essere affrontate:
- L'iniezione di dipendenza è usata raramente
- I metodi statici abbondano, sia come metodi di fabbrica che di supporto
- I singoli sono abbastanza diffusi
- Le interfacce, quando utilizzate, non sono troppo granulari
- Gli oggetti spesso trascinano dipendenze non necessarie attraverso le classi di base
Il nostro intento è che la prossima volta che avremo bisogno di apportare modifiche in una determinata area, che cercheremo di stuzzicare le dipendenze che, in realtà, esistono ma sono nascoste dietro globi come singoli e statici.
Suppongo che ciò renda il contenitore dell'IoC secondario all'introduzione dell'iniezione di dipendenza, ma mi aspetto che ci sia una serie di pratiche e raccomandazioni che potrebbero essere seguite o considerate che ci aiuteranno a eliminare queste dipendenze.