Ограничения и подводные камни

Принцип инверсии зависимостей может приводить к ситуациям, когда поток управления программы задан неявно, а явное — лучше неявного.

Неграмотное использование

При неграмотном и бесконтрольном использовании принципа и IoC-контейнеров в частности логика взаимодействия компонентов может оказаться размазанной по разным частям приложения. Это мешает восприятию программы, снижает тестируемость и увеличивает стоимость внесения изменений.

Кроме того, не все зависимости стоят того, чтобы их инвертировать. Отличить такие от остальных бывает трудно из-за, например, специфики предметной области.

Проблемы с внедрением зависимостей

С инъекцией зависимостей тоже могут возникать проблемы.

При инъекции через конструктор большое количество зависимостей сильно увеличивает конструктор. А при неграмотном использовании DI могут появиться циклические зависимости.

В обоих случаях стоит посмотреть в сторону SRP. Скорее всего, класс делает слишком много, и его надо разбивать на более мелкие.

Материалы к разделу