Ir para o conteúdo
No lado esquerdo, sobre um fundo preto, temos o texto "Arquitetura Limpa: vantagens e desvantagens". No lado direito, a capa do livro "Arquitetura limpa: O guia do artesão para estrutura e design de software", de Robert Cecil Martin.

A arquitetura limpa é um conjunto de práticas que busca aprimorar a qualidade do código e facilitar a manutenção de um software. Ela é amplamente utilizada em projetos de desenvolvimento de software e pode trazer diversos benefícios para os desenvolvedores e, principalmente, para os clientes (usuários finais).

Entre os principais benefícios da arquitetura limpa, estão:

  • Facilidade de manutenção modularização do código,
  • Redução da complexidade,
  • Possibilidade de reutilização de componentes.

Além disso, ela também pode contribuir para a melhoria da qualidade do software e para a redução de erros e bugs. Segundo Uncle Bob (Robert C. Martin),

quando o software é criado da maneira certa, ele exige só uma fração dos recursos humanos para ser criado e mantido”.

No entanto, não é uma unanimidade entre a comunidade de desenvolvimento de software que a arquitetura limpa mais ajude do que atrapalhe o seu dia a dia de trabalho construindo aplicações. A ideia desse artigo é mostrar os dois lados da “moeda” para você, tanto as vantagens como as desvantagens na adoção desse conjunto de práticas muito utilizado atualmente.


Over-engineering e as desvantagens da arquitetura limpa

Quantas vezes você já ouviu falar sobre o termo super engenharia (over-engineering)? É muito comum que adoções de arquitetura de software possam sofrer alterações ao longo do tempo, pois é impossível prever todos os problemas que vão acontecer, princpalmente no início do projeto.

Entretanto, tentar prever todos os problemas possíveis que seu software sofrerá pode ser perigoso e acarretar na utilização de uma arquitetura muito complexa para resolver um problema que talvez nunca aconteça. Explicando melhor sobre a super engenharia de uma maneira mais didática, confira a ilustração a seguir:

Do lado esquerdo, lê-se: seu trabalho é criar uma casa para 3 pessoas. Você é dev nesse projeto e quer usar tudo que aprendeu sobre Solid, Clean Arch e outras modinhas. Abaixo, aparecem vários braços segurando ferramentas de construção. Do lado direito, lê-se: aí você cria algo parecido com isso. Abaixo, há uma casa ligada a duas igrejas e uma terceira construção.
Uma metáfora sobre over-engineering

Considerando o conceito de over-engineering, permita-me começar pelas desvantagens de utilizar uma arquitetura limpa, na minha visão:

  • Maior escrita de classes/componentes,
  • Alta curva de aprendizado para o time de desenvolvedores,
  • Querer aplicar em todos os cenários (lembrando que não existe “bala de prata”),
  • Não é tão simples abstrair cenários sync e async,
  • Aquela velha frase: “Matar uma mosca com um canhão”.

Arquitetura limpa é um conjunto de boas práticas, sim, mas não para todos os cenários. Deixo isso claro para que você entenda que, se o seu time não utiliza, não significa que estão desenvolvendo o software da maneira errada. Talvez alguém apenas tenha avaliado que o esforço não compensa o ganho que essa arquitetura traz.

Veja alguns exemplos em que, na minha humilde opinião, o uso da arquitetura limpa não vale a pena:

  • Aplicações simples e pequenas,
  • Projetos de curto prazo,
  • Equipes pequenas com pouca complexidade no código,
  • Projetos de prototipagem rápida,
  • Projetos com poucos requisitos e funcionalidades,
  • Projetos de startups que nascem e morrem muito rápido, em que vale mais a entrega de valor do que o tempo de vida últil do software.

As (muitas) vantagens da arquitetura limpa

Agora que você já conhece as desvantagens de utilizar a arquitetura limpa, vamos às vantagens, que são muitas:

  • Facilidade de manutenção do código,
  • Modularização do código,
  • Redução da complexidade do código,
  • Possibilidade de reutilização de componentes,
  • Melhoria da qualidade do software,
  • Redução de erros e bugs,
  • Menor demanda de recursos humanos para criação e manutenção do software.

A arquitetura limpa facilita a manutenção do código?

Isso mesmo! Quando uma equipe utiliza arquitetura limpa, fica fácil identificar a estrutura de pastas e qual responsabilidade cada classe possui.

Ao longo do projeto de desenvolvimento de software, isso é de grande valia, pois a manutenção do software geralmente tem um custo muito maior do que a sua própria criação.

Modularizando o código

A modularização do código é uma das principais vantagens da arquitetura limpa. Com essa abordagem, é possível separar o código em módulos distintos, cada um com uma responsabilidade clara e bem definida.

Isso torna o código mais organizado, mais fácil de entender e mais fácil de manter. Além disso, a modularização permite que os módulos sejam reutilizados em diferentes partes do projeto, o que reduz a quantidade de código duplicado e torna o desenvolvimento mais eficiente.

Reduzindo a complexidade

A arquitetura limpa também ajuda na redução da complexidade do código, pois permite separar as preocupações em camadas distintas, cada uma com uma responsabilidade clara e bem definida, o que também torna o código mais fácil de entender e mais fácil de manter.

A separação de responsabilidades ainda ajuda a evitar que o código se torne muito acoplado e difícil de modificar. Com um código mais simples e modular, é mais fácil adicionar novas funcionalidades e corrigir erros.


Gostou do artigo até aqui, mas gostaria de se aprofundar melhor sobre o tema? Tenho um curso de arquitetura hexagonal, que também é citado pelo Robert C. Martin (como referência para Clean Arch) e foi criado pelo Alistair Cockburn.

Vale a pena você dar uma estudada sobre o assunto. Espero que tenha curtido e aguardo você no próximo conteúdo!


As opiniões expressas neste artigo são de responsabilidade exclusiva do autor, não refletindo necessariamente a opinião institucional da CWI.

Outras publicações