Para construir softwares sólidos e robustos, escolher uma arquitetura é fundamental, aliás ela também te ajuda a garantir que o projeto seja bem-sucedido e você consiga escalar depois sem muitos problemas. Uma arquitetura que tem ficado bastante conhecida é a Clean Architecture e é sobre ela que vamos abordar neste artigo.
O que é Clean Architecture?
Criada por Robert C. Martin, a Clean Architecture é um padrão de arquitetura de software que tem como principal objetivo separar as preocupações do software, dividindo o software em camadas. Dessa forma, os sistemas são independentes, pois essa arquitetura promove a separação clara de responsabilidades do código, mas sempre com foco nas regras de negócio. Vale ressaltar que isso não se refere diretamente a alguma tecnologia, a Clean Architecture pode ser aplicada em todas linguagens e frameworks.
A utilização dessa arquitetura é importante justamente por essa independência que ela proporciona, o que faz ter uma manutenção mais simplificada: você pode fazer alterações em uma parte sem afetar as outras.
A flexibilidade também é um ponto importante já que a independência de frameworks, bibliotecas, banco de dados e de qualquer elemento externo, permite que você faça as melhores escolhas para aquele projeto. Por fim, não podemos esquecer dos testes, já que a utilização dessa arquitetura facilita a utilização de testes automatizados. Isso porque como as regras de negócios estão isoladas das camadas externas (regras de negócio jamais devem ser implementadas na interface do usuário), faz com que você possa testar tudo de forma independente.
Componentes da Clean Architecture
A Clean Architecture é geralmente dividida em camadas, onde a camada mais interna contém a lógica de negócio. Essa separação de camadas te poupará de muitos problemas que possam vir com a manutenção do software.
Veja a imagem abaixo: os círculos são as camadas da nossa aplicação, onde as camadas mais internas não devem conhecer implementações das camadas mais externas. Além disso, temos a regra da dependência, que diz que as dependências sempre devem apontar para o nível mais alto da aplicação, ou seja, sempre para as camadas mais internas.
À medida que você avança as camadas (de fora para dentro), o software se torna mais abstrato e encapsulável.
Entidades
Esta camada contém as entidades, ou seja, os objetos de negócio, que representam as regras de mais alto nível do negócio. Além disso, ela é a camada menos propensa a mudar quando algo externo muda.
Casos de Uso
Os casos de uso representam as interações entre o sistema e os atores externos, por isso eles contém as regras de negócio da aplicação. São eles que irão orquestrar as ações a serem realizadas.
Interfaces de Controladores
Nesta camada, definimos as interfaces para a comunicação com elementos externos, por isso o MVC fica nesta camada. Ela faz a adaptação da camada mais externa para uma interface na qual a camada de casos de uso conhece. Isso mantém a implementação de detalhes fora das camadas internas.
Frameworks e Drivers
Essa camada inclui os detalhes de implementação, como a interface do usuário, bancos de dados e frameworks. É a camada mais externa e a menos importante quando se trata de regras de negócios.
Por fim, a Clean Architecture é uma excelente abordagem para utilizar se você precisa colocar a lógica de negócios no centro do seu projeto. Dessa forma, você pode criar sistemas mais flexíveis, testáveis mais facilmente e de fácil manutenção. Se você ainda não explorou a Clean Architecture, acesse nosso curso para começar a aplicá-la em seus projetos de desenvolvimento de software.