正直言って DI なんて 百害一利くらいだと思うんだけど何で流行ってるんだろ…?
ってのはどっかにスレがあるかもしれんけど。
最初に作るうえでは、
・コンパイルタイムチェックのほとんどが活用できなくなりうざ
・むやみに名前(名前空間)が増えてうざ

他人の作ったものを解析/メンテするときなんて
・オブジェクトの実装がどこにあるのか探すのがうざすぎ
・ひとつのオブジェクトの定義が複数の設定ファイルにちょっとずつ定義されてたりしてうざすぎ
・とにかく設定ファイルばっかし、あほか
・へたくその作った DI 使用のシステムなんか、コーディング/設計の意図が読めなさ過ぎ
普通に型システムを活用して作ってくれてるほうがいい

唯一じゃないかとすら思える利点が
・テストファーストができる
くらいなんだけど…。大規模で未成熟開発者割合が多い場合はまた違った利点があるかもしれんけど、圧倒的な読みにくさ(追いにくさ)はそれに余りある負の要素じゃないかと思うんだが。

どう考えても作者の「こんなことができるかも」「もしかしたら便利かも」という趣味と妄想の賜物だと思う。

趣旨に戻ると、共通化ってのを意識しすぎるやつはだめコードを書く。先にかかれてた二年生かな。
重要なのは部品化、というよりは粒度の小ささと「独立性」。
DI は依存性を減らすために考案されたってことになってるけど、本質的に依存関係にあるものを無理やり設定ファイルから注入するようにしても読みにくくなるだけってな話だ。