Здравствуйте, IQuerist, Вы писали:
IQ>>>Можно делать всякое... я описал конкретный кейс который имхо наблюдается повсеместно, но почему-то мало критикуется или критикуется не по делу.
IQ>·>Ты описал кейс, но не предложил альтернативу. Как надо-то по-твоему?
IQ>Альтернатива простая — г...кодить г...код без DI.
Это как? И чем это лучше?
IQ>>>и что ни будь вроде IDateTimeProvider, работа с датой и временем вряд ли поменяется, но
IQ>·>А мы так сделали в нашем проекте, ибо да, у нас "текущее время" оказалось вещью необычной.
IQ>Я привел имхо довольно понятную ситуацию, зачем вы мне описываете варианты где использование DI вполне уместно? Я же не говорю, что таких вообще не существует.
Ты привёл ситуацию, но я не вижу в ней ничего криминального. Я и пытаюсь добиться конкретики. Что именно плохо и как должно быть чтобы стало хорошо?
IQ>>>на всякий случай стоит "уменьшить зависимости"
IQ>·>DI не уменьшает зависимости, а делает их явными.
IQ>Мы используем DI чтобы уменьшить/снизить зависимости — это не моя формулировка, это первое из обоснований наивного использования DI. Второе — DI позволит нам еще лучше писать юнит тесты.
Это уже следствие. Когда зависимости явные — их можно перелопатить и уменьшить.
ЮТ — да, как следствие тоже упрощаются, т.к. понятие юнита тоже становится явным.
IQ>·>Единственное что в твоём коде я бы поменял, так это выкинул все эти I* интерфейсы и инжектил бы сами классы. Интерфейс лежащий рядом с единственной имплементацией — не нужен.
IQ> Тогда пропадает видимость — IoC половина священной коровы.
Ы? Что за бред? Что пропадает? Куда пропадает?
В DI никаких интерфейсов нет. Найди мне их тут:
https://en.wikipedia.org/wiki/Dependency_injection#Examples
Видимо просто люди не понимают что такое DI, но свои проблемы валят именно на него.