Re[13]: О "наивном" DI и об архитектурном бессилии
От: IQuerist Мухосранск  
Дата: 22.09.16 15:22
Оценка:
Здравствуйте, ·, Вы писали:

IQ>>Чтобы упрощать структуру кода, там где это может быть полезно... не?

·>Если в классе все методы статические, то какая именно польза от класса? Можно просто использовать namespace или что-то подобное.

Да класс превращается в старый добрый сишный модуль.

IQ>>·>Нет. Просто передаёшь всех менеджеров в конструкторе.

IQ>>·>UserService(UserProfileManager, AcitvityManager, SomethingManager, ...)
IQ>>·>Да, конструктор _может_ получиться с тучей аргументов, но зато сразу видно что именно требуется для функционирования данного класса, тебе не нужно читать код каждого отдельного метода чтобы выяснить а что же этот конкретный метод в этой ветке if-условия решил вытянуть из глобального Context.Current.
IQ>>Это иллюзия, код каждого конкретного метода читать все равно придется
·>Для чего?

Если надо выяснить какие сервисы он использует.

IQ>>·>И, более того, это всё проверяется на этапе компиляции, все зависимости обеспечены, плюс IDE помогает с навигацией по коду, find usages, go to declaration и прочим.

IQ>>А все остальные способы создания сервисов в коде на этапе компиляции не проверяются, зависимости не обеспечивают, а IDE будет намеренно мешать навигации по коду!
·>Конечно, когда конструктор вызывается через рефлекию — IDE ничем помочь не может. А уж если XML-кофиги вспомнить...

Но это же самые любимые техники "наивного DI".

·>Синглтоны скрывают структуру зависимостей и порядок инициализации.


Это хороший аргумент... но часто порядок инициализации не имеет значения. А если инициализация сложная, то я лично поостерегся бы отдавать ее на откуп малознакомому фреймворку.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.