Ora mi trovo ad affrontare l'integrazione di un contenitore di inversione del controllo (IoC) in un'applicazione esistente e sto cercando alcune raccomandazioni su come ciò possa essere fatto più facilmente con l'obiettivo finale di ridurre l'accoppiamento, aumentando così la testabilità. Sebbene generalmente non classificherei la maggior parte delle classi come oggetti divini , ognuna ha troppe responsabilità e dipendenze nascoste attraverso la statica, singleton e mancanza di interfacce.
Ecco un po 'di background alcune delle sfide che devono essere affrontate:
- L'iniezione di dipendenza viene utilizzata raramente
- I metodi statici abbondano - sia come metodi di fabbrica che di supporto
- I singleton sono piuttosto prevalenti
- Le interfacce, se utilizzate, non sono troppo granulose
- Gli oggetti spesso inseriscono dipendenze non necessarie attraverso le classi base
Il nostro intento è che la prossima volta che avremo bisogno di apportare cambiamenti in una particolare area, cercheremo di estrapolare dipendenze che, in realtà, esistono ma sono nascoste dietro globali come singoletti e statici.
Suppongo che faccia in modo che il contenitore IoC sia secondario all'introduzione dell'iniezione di dipendenza, ma mi aspetto che ci sia un insieme di pratiche e raccomandazioni che potrebbero essere seguite o considerate che ci aiuteranno a superare queste dipendenze.