Saiba que eu sou um grande fã de injeção de dependência (DI) e testes automatizados. Eu poderia falar o dia todo sobre isso.
fundo
Recentemente, nossa equipe acabou de adquirir esse grande projeto que deve ser construído do zero. É uma aplicação estratégica com requisitos de negócios complexos. É claro que eu queria que fosse agradável e limpo, o que para mim significava: manutenível e testável. Então, eu queria usar DI.
Resistência
O problema estava em nossa equipe, DI é um tabu. Foi mencionado algumas vezes, mas os deuses não aprovam. Mas isso não me desanima.
My Move
Isso pode parecer estranho, mas as bibliotecas de terceiros geralmente não são aprovadas pela nossa equipe de arquitetos (pense: "você não deve falar de Unity , Ninject , NHibernate , Moq ou NUnit , para que eu não corte o seu dedo"). Então, em vez de usar um contêiner DI estabelecido, escrevi um contêiner extremamente simples. Basicamente, ligou todas as suas dependências na inicialização, injeta todas as dependências (construtor / propriedade) e descarta qualquer objeto descartável no final da solicitação da Web. Era extremamente leve e fazia o que precisávamos. E então eu pedi para eles revisarem.
A resposta
Bem, para abreviar. Fui recebido com forte resistência. O principal argumento foi: "Não precisamos adicionar essa camada de complexidade a um projeto já complexo". Além disso, "não é como se estivéssemos conectando diferentes implementações de componentes". E "Queremos mantê-lo simples, se possível, apenas coloque tudo em uma montagem. DI é uma complexidade desnecessária, sem nenhum benefício".
Finalmente, minha pergunta
Como você lidaria com a minha situação? Não sou bom em apresentar minhas idéias e gostaria de saber como as pessoas apresentariam seus argumentos.
Claro, estou assumindo que, como eu, você prefere usar DI. Se você não concorda, diga o porquê para que eu possa ver o outro lado da moeda. Seria realmente interessante ver o ponto de vista de alguém que discorda.
Atualizar
Obrigado pelas respostas de todos. Ele realmente coloca as coisas em perspectiva. É bom o suficiente ter outro par de olhos para dar feedback, quinze é realmente incrível! Essas são realmente ótimas respostas e me ajudaram a ver a questão de lados diferentes, mas só posso escolher uma resposta, então vou escolher a que mais votou. Obrigado a todos por reservar um tempo para responder.
Decidi que provavelmente não é o melhor momento para implementar a DI, e não estamos prontos para isso. Em vez disso, concentrarei meus esforços em tornar o design testável e tentarei apresentar testes de unidade automatizados. Estou ciente de que escrever testes é uma sobrecarga adicional e, se alguma vez for decidido que a sobrecarga adicional não vale a pena, pessoalmente ainda a consideraria uma situação vitoriosa, pois o design ainda pode ser testado. E se alguma vez testar ou DI for uma escolha no futuro, o design poderá lidar com isso com facilidade.