Tecnologia
Vale a pena utilizar a famosa arquitetura limpa?
4 minutos de leitura
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:
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.