Зараз я стикаюся з інтеграцією контейнера інверсії керування (IoC) у існуючий додаток, і я шукаю деякі рекомендації щодо того, як це можна найпростіше здійснити з кінцевою метою зменшення зчеплення, тим самим підвищити простежуваність. Хоча я, як правило, не класифікую більшість класів як об'єкти бога , кожен має занадто багато обов'язків та прихованих залежностей через статику, синглтон та відсутність інтерфейсів.
Ось трохи підсумків деяких проблем, з якими потрібно зіткнутися:
- Ін'єкційну залежність застосовують нечасто
- Статичних методів багато - як фабричні, так і допоміжні методи
- Синглтони досить поширені
- Інтерфейси при їх використанні не надто детальні
- Об'єкти часто втягують непотрібні залежності через базові класи
Наша мета полягає в тому, що наступного разу, коли нам потрібно внести зміни в певну область, ми намагатимемося дражнити залежності, які насправді існують, але ховаються за глобалами, такими як одиночні та статичні.
Я вважаю, що це робить контейнер IoC вторинним для впровадження ін'єкцій залежностей, але я би сподівався, що існує певний набір практик та рекомендацій, які можна дотримуватися чи розглянути, які допоможуть нам вирвати ці залежності.