Здравствуйте, IQuerist, Вы писали:
IQ>·>Пусть одна реализация, это дело не меняет. Пишут эту реализацию другие люди, в другой команде, или это какой-нибудь RPC-интерфейс или ещё что — не важно. В вопросе главное как управлять зависимостями, а не конкретные названия классов/интерфейсов.
IQ>DI uber alies, а то что инкапсуляция идет лесом — пофигу?
alles же.
Как раз с инкапсуляцией всё гораздо лучше, по сравнению с твоими любимыми глобальными переменными.
IQ>>>Компилятор гарантирует? Мне казалось DI работает исключительно в динамике.
IQ>·>Если кажется — крестись, или хотя бы учебники читай. Я же уже ссылку давал на вики, читал? Где там динамика?
IQ>Нда... а вы вообще программированием занимаетесь? "то ты смело можешь использовать любые его методы, т.к. объект уже сконструирован, компилятор гарантирует" компилятор по вашему конструирует объекты???
Компилятор проверяет, что вызов конструктора выполнен с правильными аргументами, обеспечивает невозможность обратиться к методам несконструированного объекта, и защищает доступ к приватным полям классов, не давая доступ к зависимостям, которых у тебя не предусмотрено. Тем самым в рантайме обеспечивает гарантию.
IQ>>>И потом, если разные варианты поведения, то мне надо четко указать, какое использовать, если поведение одно — зачем вообще выносить его за границы модуля? Впрочем я знаю ответ... — "для unit тестов". Вот так убогие фреймворки для тестирования порождают архитектурные проблемы.
IQ>·>Это далеко не единственный ответ.
IQ>Имхо единственный, остальное — отмазы.
Самый главный ответ — альтернативы DI+CI хуже по многим критериям.
IQ>·>Какой конкретный вариант? Забудь множественные имплементации, не в них дело. Дело в том, что "конкретный вариант" тоже откуда-то должен взяться, у него можеть быть специфичный lifespan и у него могут быть свои зависимости.
IQ>А вот это отличный ответ... проясняет почему разговор идет именно о сервисах. Спасибо. Конечно остается вопрос — почему в виденом мною коде где использовался DI ничего из этого не использовалось... Это конечно не к вам претензия, а к "мейнстриму".
Собственно моя претензия в том, что ты лишь на основании своего негативного опыта с говнопроектами в одну кучу всё свалил и раскритиковал. Вместо того чтобы внести ясность, поделиться как же делать правильно, дискредитируешь хорошие техники всякими уничижительными словечками типа Colonoscopy Injection. И так тут сплошное невежество в "мейнстриме", а ты только усугубляешь.