Poinformuj mnie, że jestem wielkim fanem wstrzykiwania zależności (DI) i testów automatycznych. Mógłbym o tym rozmawiać cały dzień.
tło
Niedawno nasz zespół właśnie dostał ten duży projekt, który ma powstać od podstaw. Jest to strategiczna aplikacja o złożonych wymaganiach biznesowych. Oczywiście chciałem, żeby był ładny i czysty, co dla mnie oznaczało: łatwość konserwacji i testowania. Więc chciałem użyć DI.
Odporność
Problem był w naszym zespole, DI to tabu. Zostało to poruszone kilka razy, ale bogowie nie pochwalają. Ale to mnie nie zniechęciło.
Mój ruch
Może to zabrzmieć dziwnie, ale biblioteki innych firm zwykle nie są zatwierdzane przez nasz zespół architektów (pomyśl: „nie powinieneś mówić o Unity , Ninject , NHibernate , Moq lub NUnit , aby nie skaleczyć ci palca”). Zamiast więc używać sprawdzonego kontenera DI, napisałem niezwykle prosty kontener. Zasadniczo połączył wszystkie zależności podczas uruchamiania, wstrzykuje wszelkie zależności (konstruktor / właściwość) i usuwa wszelkie obiekty jednorazowe na końcu żądania WWW. Był bardzo lekki i po prostu zrobił to, czego potrzebowaliśmy. A potem poprosiłem ich o przejrzenie.
Odpowiedź
Krótko mówiąc. Spotkałem się z dużym oporem. Głównym argumentem było: „Nie musimy dodawać tej warstwy złożoności do już złożonego projektu”. Ponadto „To nie tak, że będziemy podłączać różne implementacje komponentów”. I „Chcemy, aby było to proste, jeśli to możliwe, po prostu umieść wszystko w jednym zestawie. DI to niepotrzebna złożoność bez korzyści”.
Wreszcie moje pytanie
Jak poradziłbyś sobie z moją sytuacją? Nie jestem dobry w prezentowaniu moich pomysłów i chciałbym wiedzieć, jak ludzie przedstawiliby swoje argumenty.
Oczywiście zakładam, że tak jak ja, wolisz używać DI. Jeśli się nie zgadzasz, powiedz dlaczego, abym mógł zobaczyć drugą stronę monety. Byłoby naprawdę interesujące zobaczyć punkt widzenia kogoś, kto się nie zgadza.
Aktualizacja
Dziękuję za odpowiedzi wszystkich. To naprawdę przedstawia rzeczy z perspektywy. Miło jest mieć inny zestaw oczu, aby przekazać ci opinię, piętnaście jest naprawdę niesamowite! To są naprawdę świetne odpowiedzi i pomogły mi dostrzec problem z różnych stron, ale mogę wybrać tylko jedną odpowiedź, więc wybiorę tę, która uzyskała najwyższy głos. Dziękujemy wszystkim za poświęcenie czasu na odpowiedź.
Zdecydowałem, że prawdopodobnie nie jest to najlepszy czas na wdrożenie DI i nie jesteśmy na to gotowi. Zamiast tego skoncentruję swoje wysiłki na przetestowaniu projektu i spróbuję przedstawić zautomatyzowane testy jednostkowe. Zdaję sobie sprawę, że pisanie testów jest dodatkowym kosztem i jeśli kiedykolwiek zostanie postanowione, że dodatkowy koszt nie jest tego wart, osobiście nadal postrzegałbym to jako sytuację wygraną, ponieważ projekt jest nadal testowalny. A jeśli kiedykolwiek testy lub DI będą wyborem w przyszłości, projekt z łatwością sobie z tym poradzi.