Sachez que je suis un grand partisan de l' injection de dépendance et des tests automatisés. Je pourrais en parler toute la journée.
Contexte
Récemment, notre équipe vient de recevoir ce grand projet qui doit être construit à partir de zéro. C'est une application stratégique avec des besoins métier complexes. Bien sûr, je voulais que ce soit beau et propre, ce qui pour moi voulait dire: maintenable et testable. Je voulais donc utiliser DI.
La résistance
Le problème était dans notre équipe, DI est tabou. Il a été évoqué à quelques reprises, mais les dieux n’approuvent pas. Mais cela ne m'a pas découragé.
Mon mouvement
Cela peut sembler étrange, mais les bibliothèques tierces ne sont généralement pas approuvées par notre équipe d'architectes (pensez: "tu ne parleras pas de Unity , Ninject , NHibernate , Moq ou NUnit , de peur de te couper les doigts"). Ainsi, au lieu d'utiliser un conteneur DI établi, j'ai écrit un conteneur extrêmement simple. En gros, il connecte toutes vos dépendances au démarrage, injecte toutes les dépendances (constructeur / propriété) et supprime les objets jetables à la fin de la requête Web. Il était extrêmement léger et a juste fait ce dont nous avions besoin. Et puis je leur ai demandé de l'examiner.
La réponse
Eh bien, pour faire court. J'ai rencontré une forte résistance. L'argument principal était: "Nous n'avons pas besoin d'ajouter cette couche de complexité à un projet déjà complexe". En outre, "ce n'est pas comme si nous allions brancher différentes implémentations de composants". Et "Nous voulons garder les choses simples, si possible, il suffit de tout mettre dans un assemblage. DI est une complexité sans fin qui ne présente aucun avantage".
Enfin, ma question
Comment gérerais-tu ma situation? Je ne suis pas doué pour présenter mes idées et j'aimerais savoir comment les gens présenteraient leur argument.
Bien sûr, je suppose que comme moi, vous préférez utiliser DI. Si vous n'êtes pas d'accord, dites-moi pourquoi, afin que je puisse voir le revers de la médaille. Il serait vraiment intéressant de voir le point de vue de quelqu'un qui n'est pas d'accord.
Mise à jour
Merci pour toutes les réponses. Cela met vraiment les choses en perspective. C'est assez sympa d'avoir une autre paire d'yeux pour te donner ton feedback, quinze c'est vraiment génial! Ce sont vraiment d'excellentes réponses et m'ont aidé à voir le problème de différents côtés, mais je ne peux choisir qu'une seule réponse, je vais donc choisir celle qui a obtenu le plus haut vote. Merci à tous d'avoir pris le temps de répondre.
J'ai décidé que ce n'était probablement pas le meilleur moment pour mettre en œuvre l'ID, et nous ne sommes pas prêts pour cela. Au lieu de cela, je concentrerai mes efforts sur la possibilité de tester la conception et essaierai de présenter des tests unitaires automatisés. Je suis conscient que la rédaction de tests est une charge supplémentaire, et si jamais on décidait que la charge supplémentaire ne valait pas la peine, personnellement, je la verrais toujours comme une situation gagnante puisque la conception est toujours testable. Et si jamais le test ou DI est un choix à l'avenir, la conception peut facilement le gérer.