История изменений
Исправление Kogrom, (текущая версия) :
Если кратко, то DI - это зло, которое надо использовать только в случае крайней необходимости. И в Вашем примере оно ещё не так страшно. Обычно же используют всякие хитрые фреймворки (в C# мне пришлось столкнуться с Autofac, например), в которых зависимости между классами строятся специальными билдерами через xml-конфиг и разобрать что с чем связано в проекте становится нетривиальной задачей.
Моду на DI ввёл Мартин Фаулер. Это было следствием моды на юнит-тестирование, которую ввёл друг Фаулера - Кент Бек. Проблема тут следующая: сама разработка через тестирование (TDD) вещь интересная, книгу по этой теме рекомендую к прочтению всем. Но вот переделывание старых проектов под юнит-тесты - это зло и бессмысленное насилие над программистами. Ибо юнит-тесты для кода, а не код для юнит-тестов. Если какой-то код удобнее писать без юнит-теста, то в помойку надо отправлять этот юнит-тест, а не код.
Есть ещё последователь Бека - Майкл К. Физерс (книга «Эффективная работа с унаследованным кодом»), который ввёл понятие «характеристический тест», то есть юнит-тест, который натягивается на существующий код для рефакторинга. Но это уже совсем странная вещь, ибо чтобы натянуть юнит-тест на старый код, надо этому коду сделать рефакторинг.
Исходная версия Kogrom, :
Если кратко, то DI - это зло, которое надо использовать только в случае крайней необходимости. И в Вашем примере оно ещё не так страшно. Обычно же используют всякие хитрые фреймворки (в C# мне пришлось столкнуться с Autofac, например), в которых зависимости между классами строятся специальными билдерами через xml-конфиг и разобрать что с чем связано в проекте становится нетривиальной задачей.
Моду на DI ввёл Мартин Фаулер. Это было следствием моды на юнит-тестирование, моду на которое ввёл друг Фаулера - Кент Бек. Проблема тут следующая: сама разработка через тестирование (TDD) вещь интересная, книгу по этой теме рекомендую к прочтению всем. Но вот переделывание старых проектов под юнит-тесты - это зло и бессмысленное насилие над программистами. Ибо юнит-тесты для кода, а не код для юнит-тестов. Если какой-то код удобнее писать без юнит-теста, то в помойку надо отправлять этот юнит-тест, а не код.
Есть ещё последователь Бека - Майкл К. Физерс (книга «Эффективная работа с унаследованным кодом»), который ввёл понятие «характеристический тест», то есть юнит-тест, который натягивается на существующий код для рефакторинга. Но это уже совсем странная вещь, ибо чтобы натянуть юнит-тест на старый код, надо этому коду сделать рефекторинг.