Я пишу свое второе приложение для реальной жизни, которое использует DI. В целом я думаю, что это позволило улучшить дизайн. Но есть некоторые запахи кода, которые я не знаю, как их решить.DI: Сколько нужно вводить?
Я предпочитаю использовать инъекцию конструктора и часто замечаю, что мне нужно около 5 или более объектов, которые нужно вставить в конструктор. Кажется, слишком много, может быть, это проблема дизайна, а не правильная SRP. Но я думаю, что мое использование ДИ также должно быть обвинено.
Я ищу «лучшие практики» или «эмпирическое правило», в общем, я, кажется, впрыскиваю все, что не в инфраструктуру .Net, это переусердство?
Чтобы начать все, вот два примера объектов, которые я вставляю, но я не уверен.
Объекты, которые являются настоящими синглонами, такими как конфигурация приложения или эти небольшие классы использования, вы их вводите? Они, кажется, очень часто вводятся, единственная причина для их инъекции, похоже, позволяет изменить значение для тестирования, но Айенде, похоже, решил проблему по-другому: http://ayende.com/Blog/archive/2008/07/07/Dealing-with-time-in-tests.aspx.
Общие предметы, такие как ведение журнала, которые используются почти для каждого объекта, должны ли они быть введены?
Если доступ к конфигурации приложения, как глобальный (или статический), то ваш класс зависит от целого этого объекта и будет трудно использовать в других местах. Лучше вводить определенную часть конфигурации, которую интересует ваш объект. –