Clean Arch === CAOS 🔥
Calma... vem aqui entender aqui como foi difícil pra mim entender clean arch no início.
Calma, não me cancela haha eu AMO clean architecture, porém no início de colocá-lo em prática foi bem caótico!
Vou tentar trazer uns pontos do por quê foi caótico, como eu fiz pra melhorar esse caos e claro, os maiores benefícios que eu acredito que clean architeture possa ter em um projeto da sua empresa.
Sim da sua empresa, por que pra projetos pessoais (a não ser que você queira estudar essa arquitetura) eu acho overrated!
Let’s go:
Mas que raios é clean arch 😬
Você pode ter parado de paraquedas aqui né, foi mal, vou explicar rapidão o que é:
Clean Architecture foi popularizada por Robert C. Martin, também conhecido como Uncle Bob e é um estilo arquitetural que visa separar as preocupações em um sistema de software, promovendo a modularidade, a manutenibilidade e a testabilidade do código. A ideia central é manter as regras de negócio independentes de detalhes de implementação, como frameworks, bancos de dados e interfaces de usuário.
Um exemplo simples de Clean Architecture seria dividir um aplicativo em camadas concêntricas, onde as camadas mais externas são voltadas para interfaces externas, como interfaces de usuário ou APIs, enquanto as camadas mais internas contêm as regras de negócio e lógica do sistema.
Eu adoro esse diagrama do Otávio lemos, exemplifica exatamente como é:
https://thewisedev.com.br/
Nesse exemplo:
As Entidades representam objetos de negócio, que encapsulam os dados e as operações relacionadas a eles.
Os Casos de Uso (Use Cases) contêm a lógica de aplicação e as regras de negócio do sistema.
Os Controladores/APIs atuam como ponto de entrada para o sistema, recebendo e enviando dados para a interface do usuário.
A Interface do Usuário lida com a interação direta do usuário com o sistema, exibindo informações e recebendo entrada.
Essa estrutura permite que cada camada dependa apenas das camadas internas a ela, facilitando (e muito) a manutenção, testes e evolução do sistema ao longo do tempo.
Agora que você “entendeu“ o contexto, deixa eu te falar da furada 😱
Ah Ana, mas você achou um furo em clean arch????
Não, pow…
Mas a furada é a complexidade de REFATORAR um software já existente cheio de dependências de cídigo e lógicas mal estruturadas.
Tendo em vista esse cenário, puts se torna muito completo implementar clean arch.
A questão é, na teoria faz muito sentido, mas na vida real muita das vezes precisamos “reutilizar“ lógicas existentes e fazer uma apanhado de todo o projeto que temos para transformá-lo com boas práticas.
E isso não é nada fácil de ser feito!
O step mais difícil ao aplicar uma nova arquitetura em um projeto legado é entender onde que as lógicas se encaixam como use cases, ou como as interfaces vão se comunicar com os repository e o mais temido: Como remodelar as entidades!
Projetos legados muitas das vezes tem modelação de banco de dados não tão bem feita, isso por que um projeto cresce pequeno e aumenta conforme vai passando tempo e muitas das vezes uma boa estrutura do modelo do banco dentro do projeto não esta prevista!
Como resolver o caos 🫡
Quando eu estava refatorando o projeto me peguei no cenário que: Ou eu escrevo num papel o que eu preciso fazer ou eu vou me perder!
E foi ai que peguei o endpoint em questão que estava refatorando e comecei a elencar cada camada do clean arch e onde cada pedaço daquela lógica do endpoint iria se encaixar.
Keep it simple!
E foi mantendo simples que me ajudou, pude entender melhor onde que as lógicas iriam se comunicar e também vi que o endpoint em si tinha lógicas misturadas que faziam mais sentido estar talvez em outro use case, e esse use case seria compartilhado com outros controllers!
Foi aqui que o Java me salvou 💖
Grande parte da minha carreira trabalhei com padrão MVC que lembra muito clean arch porém é bem mais simplificado.
Entender o que já são services, repository, controller, domain e afins me ajudou muito a não colocar um caos aonde não precisava! E claro a não me assustar com clean arch.
Afinal…
Clean arch ao longo prazo é benéfico demais, principalmente usando uma lang orientada a objetos, fica uma maravilhaaaaa
Me conta aqui, você já usou Clean Arch em um projeto em produção?
Dicas da semana 🔥
[CURSOS] -
[TESTES] - Como eu mostrei não basta apenas fazer exemplos, precisamos TESTAR DE FATO! Se você tem dificuldade ou quer se especializar um testes automatizados, tenho indiação de um curso fodástico para você → SE VOCÊ QUER MUDAR COMO TESTA SE CÓDIGO, CLICA AQUI!
[INGLÊS] - Assine uma das melhores plataforma para aprender inglês com 47% de desconto → VEM VER AQUI
[YOUTUBE] -
Como aprender em público ajudou na minha carreira!