Quais são os benefícios da injeção de dependência do AngularJS?

Eu tenho trabalhado com o angular por algumas vezes agora, e não consigo ver como isso é uma melhoria da minha forma anterior de codificação.

Primeiro, não consigo ver o que há de errado em ter um objeto central para manter seu projeto, afinal de contas, o injetor é um singleton que procura suas dependências em um local central, de modo que o angular tem um objeto central, apenas oculto. Namspacing não significa necessariamente acoplamento, se for feito corretamente. Mesmo quando estiver pronto, você não precisa que todos os objetos do seu código estejam fracamente acoplados aos outros. Além disso, sempre que você cria um script JS autônomo, é necessário envolvê-lo em um ângulo para que eles sejam bons juntos.

Em segundo lugar, é muito detalhado declarar todas as suas dependências sempre (espacialmente com minificação), portanto, não há ganho do ponto de vista de legibilidade em comparação com o namespace adequado.

Em terceiro lugar, o ganho de desempenho é mínimo. Isso me obriga a usar singletons em todos os lugares, mas eu posso fazer isso sozinho, se eu precisar, e na maioria das vezes, eu não faço (manipulações de rede e DOM são o meu gargalo, não objetos JS).

No final, gosto do HTML "aprimorado" e das ligações bidirecionais automáticas, mas não consigo ver como a injeção faz com que seja melhor do que a maneira como outros frameworks lidam com dependências, já que ela nem fornece carregamento dinâmico como require.js. Eu não vejo nenhum caso de uso em que eu diga a mim mesmo "oh, isso é onde é muito melhor do que antes, eu vejo" enquanto codifico.

Você poderia me explicar quais benefícios essa escolha técnica traz para um projeto?

Eu posso ver apenas um por enquanto: convenção e aplicação de melhores práticas. É um grande problema criar um ecossistema lib, mas por enquanto não vejo o fruto dele na comunidade angular.

questionAnswers(1)

yourAnswerToTheQuestion