Нехай буде відомо, що я великий шанувальник введення залежності (DI) та автоматизованого тестування. Я міг про це цілий день говорити.
Фон
Нещодавно наша команда щойно отримала цей великий проект, який потрібно будувати з нуля. Це стратегічне застосування зі складними бізнес-вимогами. Звичайно, я хотів, щоб це було приємно і чисто, що для мене означало: ремонтопридатне та перевірене. Тому я хотів використовувати DI.
Опір
Проблема була в нашій команді, DI - це табу. Його виховували кілька разів, але боги не схвалюють. Але це не відштовхувало мене.
Мій рух
Це може здатися дивним, але сторонні бібліотеки, як правило, не схвалюються нашою командою архітекторів (подумайте: "Ви не будете говорити про Єдність , Нінжект , Нікібернат , Мок або НУніт , щоб я не порізав вам палець"). Тож замість того, щоб використовувати встановлений контейнер DI, я написав надзвичайно простий контейнер. По суті, він з'єднав усі ваші залежності від запуску, вводить будь-які залежності (конструктор / властивість) та видаляє будь-які одноразові об'єкти наприкінці веб-запиту. Він був надзвичайно легкий і просто робив те, що нам потрібно. І тоді я попросив їх переглянути.
Відповідь
Ну, аби коротше. Мене зустріли сильний опір. Основним аргументом було: "Нам не потрібно додавати цей рівень складності до вже складного проекту". Крім того, "Це не так, як ми будемо підключатися до різних реалізацій компонентів". І "Ми хочемо, щоб це було просто, якщо це можливо, просто складіть все в одну збірку. DI - це складність, яка не потребує ніякої користі".
Нарешті, моє запитання
Як би ви вирішили мою ситуацію? Я не гарно представляю свої ідеї, і я хотів би знати, як люди викладуть свої аргументи.
Звичайно, я припускаю, що, як і я, ти вважаєш за краще використовувати DI. Якщо ви не згодні, будь ласка, скажіть, чому я можу побачити іншу сторону монети. Було б дійсно цікаво бачити точку зору того, хто не погоджується.
Оновлення
Дякую за відповіді всіх Це дійсно ставить речі в перспективу. Досить приємно мати ще один набір очей, щоб дати вам відгуки, п'ятнадцять справді приголомшливі! Це дійсно чудові відповіді і допомогли мені побачити питання з різних сторін, але я можу вибрати лише одну відповідь, тому я просто підберу голосну. Дякую всім, що знайшли час для відповіді.
Я вирішив, що це, мабуть, не найкращий час для впровадження DI, і ми до цього не готові. Натомість я сконцентрую свої зусилля на тестуванні конструкції та спробі представити автоматичне тестування блоку. Я знаю, що написання тестів - це додаткові накладні витрати, і якщо коли-небудь буде вирішено, що додаткові накладні витрати не варто, особисто я все-таки вважатиму це виграшною ситуацією, оскільки дизайн все ще перевіряється. І якщо будь-коли тестування або DI - це вибір у майбутньому, дизайн легко впорається з цим.