1
resposta

[Dúvida] Boas práticas na entidade seguindo o SOLID

Na aula 2 do módulo 3: Criando a primeira entidade, me surgiu uma dúvida quanto a decisão de levar o typeORM para dentro das entidades existentes... Isso não seria uma quebra do SOLID? Afinal, a minha entidade deveria ser responsável somente por descrever os objetos do meu negócio, o núcleo do que é cada entidade no sistema. Fixar uma tecnologia específica como o typeORM dentro das entidades não seria um acoplamento a uma tecnologia específica? Caso eu quisesse usar outro ORM eu teria que reescrever a entidade toda? O que seria certo a se fazer de acordo com a visão do SOLID?

1 resposta

Olá, William!

Sua pergunta é muito pertinente e mostra que você está realmente entendendo os princípios do SOLID. Você está certo quando diz que, idealmente, a entidade deveria ser responsável apenas por descrever os objetos do seu negócio.

No entanto, na prática, muitas vezes precisamos fazer algumas concessões para aproveitar os benefícios de determinadas tecnologias. No caso do TypeORM, a decisão de incluí-lo diretamente nas entidades é uma dessas concessões. Isso permite que você aproveite todos os recursos do TypeORM, como a capacidade de definir relações complexas entre entidades, a facilidade de migração e a capacidade de realizar consultas complexas.

Por outro lado, você está correto em dizer que isso cria um acoplamento com o TypeORM. Se você decidir mudar para outro ORM no futuro, terá que reescrever suas entidades. No entanto, isso é uma troca que muitos desenvolvedores estão dispostos a fazer para aproveitar os benefícios do TypeORM.

Se você quiser seguir estritamente os princípios do SOLID, poderia criar uma camada de abstração entre suas entidades e o TypeORM. Isso permitiria que você trocasse o ORM sem ter que reescrever suas entidades. No entanto, isso também tornaria seu código mais complexo e poderia limitar a quantidade de funcionalidades do TypeORM que você poderia usar.

Então, em resumo, não há uma resposta definitiva para sua pergunta. Depende muito do contexto do seu projeto e das trocas que você está disposto a fazer.

Espero ter ajudado e bons estudos!