Re[7]: О "наивном" DI и об архитектурном бессилии
От: Tom Россия http://www.RSDN.ru
Дата: 01.09.16 20:28
Оценка:
·>Куча вредных антипаттернов, которые легко размазать по всему проекту, а обычно достаточно одного единственного constructor injection. И вычищать потом это — замучаешься.
Давай по конкретнее. Хоть один анти паттерн покажи мне и опиши в чём состоит проблема.

·>И собственно тупой код типа:

·>
·>var someValue = "SomeValue";
·>var anotherFoo = new AnotherFoo();
·>var instance = new Bar(anotherFoo, someValue);
·>

·>выглядит ничуть не хуже.
Выглядит хуже. И создаёт конкретные проблемы в вполне конкретных случаях. Я больше скажу, с управлением временем жизни обьектов руками есть большие проблемы даже на теоретическом уровне. Вот тебе прмиер. Есть обьект IFoo. Ну или IPlugin для наглядности. Есть пара его реализаций, одна из них использует unmanaget ресурсы и требует реализации IDisposable а другая нет. Кроме как калечного решения в виде наследованияч IPlugin от IDisposable для ручного управления зависимостями я не вижу.

·>Единственное для чего эти контейнеры могут быть хороши это всякое Assembly Scanning, но реально проектов, где это необходимо — очень мало.

Контейнеры много чего могут но это бесполезно обьяснять человеку у которого в голове установка что они зло.

Tom>>Пользовать DI без контейнера конечно можно но жутко неудобно.

·>Зато полная поддержка компилятора и IDE. А неудобно только с непривычки.
new это огромные трудности при написании тестов. Я про Integration тесты.
Руками собирать всё дерево зависимостей? Вопрос нахера, если я 2-мя движениями мышки могу в тесте подменить любую зависимость.
Народная мудрось
всем все никому ничего(с).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.