Write an article about
O que é a Clean Architecture?
A Clean Architecture, proposta por Uncle Bob (Robert C. Martin), é um modelo de arquitetura em camadas que tem como objetivo principal manter o núcleo do sistema isolado de frameworks, bibliotecas e tecnologias externas.
O foco está em garantir que as regras de negócio fiquem desacopladas, facilitando testes, manutenção e troca de tecnologias ao longo do tempo.
Camadas explicadas (de fora para dentro):
Nenhuma camada de dentro deve conhecer a camada para fora dela
-> = Conhece
lemos sempre azul -> verde -> amarela -> vermelha
Camada externa (azul):
Contém frameworks, bancos de dados, bibliotecas de terceiros, servidores web e qualquer tecnologia externa. Ela depende das camadas internas, mas não é dependida por elas.
Camada intermediária (verde):
Abriga os adapters, como controllers, presenters e gateways. Essa camada é responsável por traduzir dados entre o mundo externo e o core do sistema.
Casos de Uso:
Aqui ficam os use cases, que coordenam regras de negócio e orquestram chamadas para interfaces. Eles usam interfaces para se comunicar com a camada externa (ex: persistência, envio de e-mail).
Entidades (Domínio):
O núcleo do sistema. Essa camada contém as regras de negócio puras, como validações e cálculos que não dependem de nada externo.
Exemplo: uma validação de CPF ou o cálculo do total de um pedido.
Vantagens
- Alta testabilidade (core não depende de infra)
- Facilidade de manutenção e evolução
- Baixo acoplamento
- Independência de frameworks e bancos
- Reutilização de lógica de negócio
Desvantagens
- Curva de aprendizado mais alta
- Mais código e estrutura para coisas simples
- Pode parecer overkill para projetos pequenos
- Demanda disciplina para manter separação clara de camadas