Здравствуйте, VladD2, Вы писали:
VD> Б>Рискую быть непонятым, но скажу, что DI это даже круче — в некотором роде это ФП-стиль построения большого приложения. Как в ФП мы передаем замыкание ("настроенную" функцию), так в DI мы передаем зависимость (уже "настроенный" сервис).
VD> Так за все приходится платить. Разбираться в коде созданном на базе большинства DI действительно сложнее. По уму нужно делать статический DI, который резолвил бы зависимости во время компиляции. Это сняло бы много проблем. Но современные мэйстрим-языки на это не особо рассчитаны. Вот и появляются строковые конфиги. Ошибки при загрузке. Непонимание того почему тут подсунули некоторый тип, а не иной. И т.п.
В Скале есть
неявные параметры которые это вроде как позволяют. Но по-моему это даже хуже. На демках это круто, но чуть дальше в лес и пришли...
Мне кажется, что зависимости это важная часть дизайна и к ней нужно подходить осторожно, описывать явно. Нахаляву получается отличная compile-checked документация для кода. А все эти контейнеры и неявности — экономия на строчках кода (лишь за счёт того, что мы называем конфиги не кодом!) без каких-либо улучшений качества.