No ano passado, criei um novo sistema usando Injeção de Dependência e um contêiner de COI. Isso me ensinou muito sobre DI!
No entanto, mesmo depois de aprender os conceitos e os padrões adequados, considero um desafio desacoplar o código e introduzir um contêiner IOC em um aplicativo herdado. O aplicativo é grande o suficiente para o ponto em que uma implementação verdadeira seria esmagadora. Mesmo que o valor tenha sido entendido e o tempo concedido. Quem concedeu tempo para algo assim?
O objetivo do curso é trazer testes de unidade para a lógica de negócios!
Lógica comercial interligada com chamadas de banco de dados que impedem testes.
Li os artigos e compreendo os perigos da Injeção de Dependência do Pobre Homem, conforme descrito neste artigo da Los Techies . Eu entendo que isso realmente não dissocia nada.
Entendo que isso pode envolver muita refatoração em todo o sistema, pois as implementações exigem novas dependências. Eu não consideraria usá-lo em um novo projeto com qualquer quantidade de tamanho.
Pergunta: Tudo bem usar o DI da Poor Man para introduzir testabilidade em um aplicativo herdado e começar a bola rolar?
Além disso, o uso do DI de Poor Man como uma abordagem básica da injeção de dependência verdadeira é uma maneira valiosa de educar sobre a necessidade e os benefícios do princípio?
Você pode refatorar um método que possui uma dependência de chamada de banco de dados e um resumo que chama atrás de uma interface? Simplesmente ter essa abstração tornaria esse método testável, pois uma implementação simulada poderia ser passada através de uma sobrecarga de construtor.
Mais adiante, uma vez que o esforço ganhe adeptos, o projeto poderá ser atualizado para implementar um contêiner do COI e os construtores estarão lá fora, captando as abstrações.
I consider it a challenge to decouple code and introduce an IOC container into a legacy application
claro que é. É chamado de dívida técnica. É por isso que, antes de qualquer grande reforma, são preferíveis pequenos e contínuos refatores. Reduza as principais falhas de projeto e mudar para a IoC seria menos desafiador.