Je doute que vous ayez des données concrètes à ce sujet, alors je vais ajouter quelques réflexions à ce sujet. Tout d'abord, vous n'utilisez pas DI (ou d'autres principes SOLID) car cela vous aide à faire TDD. C'est l'inverse, vous faites TDD parce que cela vous aide dans la conception - ce qui signifie généralement que vous obtenez du code qui suit ces principes. Discuter de la raison pour laquelle utiliser les interfaces est une question différente, voir: https://stackoverflow.com/questions/667139/what-is-the-purpose-of-interfaces.
Je suppose que vous êtes d'accord que le fait d'avoir vos classes fait beaucoup de choses différentes entraîne un code désordonné.Ainsi, je suppose que vous allez déjà pour SRP. Parce que vous avez différentes classes qui font des choses spécifiques, vous avez besoin d'un moyen de les relier. Si vous les reliez à l'intérieur des classes (c'est-à-dire les constructeurs), vous obtenez beaucoup de code qui utilise des versions spécifiques des classes. Cela signifie que les modifications apportées au système seront difficiles.
Vous allez avoir besoin de changer le système, c'est un fait du développement logiciel. Vous pouvez appeler YAGNI pour ne pas ajouter de fonctionnalités spécifiques, mais pas sur le fait que vous n'aurez pas besoin de changer le système. Dans mon cas, c'est quelque chose de vraiment important car je fais des sprints hebdomadaires. J'utilise un cadre DI dans lequel la configuration est faite par le code. Avec une très petite configuration de code, vous connectez beaucoup de relations différentes. Ainsi, lorsque vous supprimez la discussion sur l'interface par rapport aux classes concrètes, vous économisez réellement la frappe, pas l'inverse. Aussi pour les cas une classe concrète est sur le constructeur, elle l'accroche automatiquement (je n'ai pas à configurer) en construisant le reste des relations. Cela me permet également de contrôler la durée de vie de certains objets, en particulier je peux configurer un objet pour qu'il soit Singleton et qu'il ne passe qu'une seule instance tout le temps.
Notez également que l'utilisation de ces pratiques n'est pas plus lourde. Les utiliser pour les premières fois, est ce qui provoque les frais généraux (à cause du processus d'apprentissage + dans certains cas, le changement de mentalité).
Conclusion: vous n'aurez pas besoin de mettre tous ces appels constructeurs partout pour aller plus vite.