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