Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Por que foi utilizada a abordagem de controller como objeto?

Na aula 09, uma das implicações de não se utilizar o controller com métodos static async (que pertencem à classe e não às suas instancias) é ter que estar fortemente acoplado à implementação do controller, a ponto de ter que recuperar o repositório nas rotas (devido à injeção de dependencia no controller)

nesse contexto, por que não utilizar um DI-container como o inversify, por exemplo?

1 resposta
solução!

Oii Ikaro, tudo bem?

A abordagem de controller como objeto, em vez de usar métodos estáticos, é uma decisão de design que pode variar de projeto para projeto. No caso do curso, essa abordagem foi adotada para demonstrar como a injeção de dependências pode ser feita manualmente, sem a necessidade de um DI-container como o Inversify.

A injeção de dependências é uma técnica que permite que uma parte do código forneça as dependências (ou seja, instâncias de classes ou objetos que uma classe precisa para funcionar corretamente) para outras partes do código, em vez de ter classes criando essas instâncias por conta própria. Isso torna o código mais modular, mais fácil de testar e mais fácil de modificar.

Mas, você tá correto que um DI-container como o Inversify pode simplificar esse processo, automatizando a criação e a injeção dessas dependências. O Inversify, em particular, é um poderoso e leve DI-container para JavaScript/TypeScript que pode ser muito útil em projetos maiores e mais complexos.

No curso, a injeção de dependências é feita manualmente para fins didáticos, para que você possa entender como ela funciona em um nível mais fundamental. Mas em um projeto real, você certamente pode considerar o uso de um DI-container como o Inversify para tornar seu código mais limpo e mais fácil de gerenciar.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software