Здравствуйте, Министр Промышленности, Вы писали:
МП>С моей профессиональной точки зрения DI фреймворки не нужны.
Я их тоже недолюбливаю, но понимаю их выгоды (как и недостатки).
Есть случаи когда DI вообще удобное решение. Например, когда сам продукт — это расширяемая среда вроде MS VS. Представить скажем подсветку кода в вид инжектящегося компонента удобно и красиво. Не надо писать левый код регистрации. Все выглядит декларативно и красиво.
То что DI решает проблему написания кучи кода создающего объекты и передающего их в другие конструкторы тоже верно. Иногда объектов может быть очень много. Но есть тут и минусы. Код завязанный на коркретный DI хрен перенесешь в другой проект. Иногда DI заставляет вводить лишние абстракции. Скажем вводить интерфейсы там где у них никогда не будет более одной реализации. Иногда DI приводит к тому, что хрен поймешь, что за тип к тебе в реальности приехал и где та магия, которая к этому привела.
Многие проблемы DI происходят от того, что DI-фрэймворки динамические, создают граф зависимостей в рантайме. Если бы зависимости разрешались бы статически, при компиляции море проблем DI ушло бы.
Ну, а по жизни все просто. Вот есть в продукте DI и все через него сделано и ты вынужден использовать его и писать в соответствующем стиле. А если тебя свой проект, то выбор — это архитектурное решение.
Лично я обычно с неохотой иду на использование DI. Не поверите, но код отлично можно писать в процедурном стиле.