Pular para o conteúdo

97 – DDD + Clean Architecture | Corrigindo a Arquitetura!

Muitas vezes é difícil acertarmos uma boa arquitetura de primeira. Nesses casos há salvação: é possível melhorar a arquitetura refatorando as funções, movendo-as para as camadas mais adequadas.

Que você vai fazer para usar bem boas arquiteturas como clinictran e bons princípios de de de de de e aí galera beleza esses dias eu vi um mimi muito engraçado que é esse daqui ó vai dominitec and when i get from and baby se né porque não porque nós precisamos de um beck and porque não conectar o front-end direto à base de dados e a resposta igualmente engraçada

Né e é e por que que a gente come e vai para o banheiro em vez de jogar comida diretamente no vaso porque as coisas precisam ser processadas apesar que eu tenho certeza que muita gente não quer conectar o front-end direto com a base de dados mas existem problemas que estão entre esse extremo né que fazer as coisas direito que é o seguinte pessoal é você se perder

Nas camadas quiser você implementa coisas que a prestar na camada de domínio por exemplo pensando na clínica tector e uma outra camada por exemplo implementar regras de negócio do domínio dentro de um controlador eu acho que é mais comum do que ligar o front-end direto com o banco de dados e tenho certeza que possivelmente você já fez isso ou faz isso e qual que

Eu acho que é um dos problemas pessoal um dos problemas é que é muito difícil a gente modelar um problema usando por exemplo programação orientada a objetos quer dizer pegar um problema do mundo real e fazer uma modelagem orientada a objetos que representa esse problema do mundo real e essa é a camada de domínio lá daquele markt e é também o que é proposto

No ddd que você conseguir pegar um problema do mundo real e abstrair né no modelo orientado a objetos que não contém só dados mas também comportamento muitas vezes que a gente peço e modelagem a gente pensa só na modelagem de dados só no banco de dados e não pensa que você pode ter comportamento nas classes de domínio e de fato você tem que ter comportamento

Que representa as regras de negócio do domínio isso que eu tô falando está relacionado com uma apresentação que eu está e no youtube é uma apresentação da nbc 11/2020 inclusive aqui ó é de seis de agosto é super recente tá em que esse desenvolvedor chamado jimmy burguer ele fala sobre do nem devem brick factory quando vê se não eu falei caramba aqui e que

Esse do mentiu infectrin será que é só mais um baú sword aí ou será que esse negócio faz sentido e de fato o que ele fala nessa apresentação tem bastante sentido ele começa definindo do meio do elegante design né e fala que é isso que eu acabei de falar para vocês né que realmente você pegar um problema e um domínio né e consegui projetar isso no modelo

Orientado a objetos o que a gente chama de modelo de domínio aí aí ele dá um exemplo né porque o que seria esse negócio de refatoração orientada né dirigido ao domínio então esse modelo de dados que ele usa de exemplo né seria como se fosse uma aplicação de membros de um problema de lealdade né existem muitas lojas né se você compra nessa loja você ganha

Pontos e com esses pontos você pode ganhar lewis neville benefícios depois chamado nesse modelo de offer e nesse modelo então você tem um membro que a pessoa que faz parte desse programa de lealdade você tem os vieworks né que o parece-me que o cliente prefiro chamar de ópera e você tem os tipos de oferta e as relações entre isso daqui né você tem as ofertas

Que são atribuídas a um determinado membro que uma coleção de ofertas que é representado por esses aí ó fiz aqui e do outro lado você tem para uma oferta você pode recuperar qual que é um membro né ao qual foi atribuída aquela oferta e depois você tem a relação da oferta para o tipo de oferta f cada oferta tem um tipo é uma questão seguinte beleza né esse

Modelo de dados tá ok você pode criar um banco de dados pensando nesse modelo de dados agora que ele três seguintes dentro de um modelo de domínio e não tem soldados você tem que ter comportamento também e o comportamento não está representado aqui é o seu cliente pode olhar para esse aqui falar beleza isso aqui realmente representa o que eu quero no sistema mas

Para você que vai implementar fica faltando a parte de comportamento e parece-me que isso é uma coisa comum né o desenvolvedor ele fica por ali ele fica só no modelo de dados e implementa esse modelo de idade e ficam faltando a série de negócio que deveriam estar nesse modelo de domínio é o time blogger ele mostra uma abordagem como você re faturaria as regras de

Negócio que você já implementou em camadas de forma equivocada como você e fatura essas regras de negócio novamente para dentro do domínio eu achei interessante isso porque às vezes acontece isso você não desenvolveu o sistema usando uma boa que te tura e o jimmy bower né esse cara ele oferece uma maneira de como consertar as coisas utilizando a fatoração né

Bem interessante apresentação se você dá uma olhada vou colocar o link na descrição do vídeo que ele mostra essa refatoração passo a passo e como ele faz para tirar uma funcionalidade que cheira a regra de negócio e colocar lá no modelo de domínio cremosa daqui arquitetura do sistema e fala né onde está o comportamento e comportamento não está implementado

Na camada de modelo de domínio né que seria para a gente vai sim na camada de serviços e aí ele mostra o código né por exemplo aqui você tem esse name is play services um método redondo que vai conter toda a funcionalidade aqui misturada basicamente essa funcionalidade tem três partes que é realmente o que acontece em geral no nosso caso de uso né você tem lá

A recuperação dos dados do banco de dados depois você tem a realização do cajuru em si mesmo e no final você tem atualização do banco de dados com aquela operação que você realizou e legal é que em vários passos ele vai então extraindo essa funcionalidade que estava acoplada dentro do controlador para a camada de domínio onde ela realmente e eu achei legal

Isso porque que certa forma mostra que você pode corrigir uma arquitetura que está equivocada está muito ocupada uma coisa ruim que eu achei do código lá do time é que não tem nenhum caso de teste então quando ele faz aí a saturação fica difícil saber se aquela refatoração não inseriu nenhum blog vale a pena sempre você ter testes para fazer esse tipo de

Alteração mas ele mostra que mesmo sem teste você consegue fazer essa refatoração e melhorar arquitetura usando refatorações e quando ele mostra o código no final estivesse realmente ficou muito melhor certo olhando para esse código aqui você consegue ver que ele tá recuperando um membro lá do programa de lealdade tá recuperando o tipo de oferta tá fazendo

Atribuição da oferta aquele membro e tá salvando a oferta no banco de dados esse controlador aqui fica muito mais simples é tudo que ele tava porque ele tava com lógica que pertence a regras de negócio do domínio e tanto é uma abordagem para você conseguir melhorar a sua arquitetura em direção né ao de de ou aqui na architecture é bom gente ver que as vezes

Que a gente não acerta de primeiro de fato não é o melhor é realmente você já fazer textura da maneira correta a maneira mais limpa mas é bom a gente saber que mesmo quando a gente não consegue fazer de primeira e sem maneiras de você refatorar e melhorar arquitetura utilizando esse tipo de abordagem para esse galera fiquem com deus e até o próximo vídeo e aí

Transcrito do video
97 – DDD + Clean Architecture | Corrigindo a Arquitetura! By Otavio Lemos