image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Article image
Filipi Firmino
Filipi Firmino29/07/2025 15:56
Compartir
Suzano - Python Developer #2Recomendado para tiSuzano - Python Developer #2

Arquitetura Limpa: a esperança dos projetos que não viram espaguete.

    Sabe aquele projeto que você começa animado e, em 3 sprints, tá chorando nos if-else aninhados com 10 níveis de profundidade?

    Pois é, meu consagrado, o nome disso é acoplamento tóxico com pitadas de desespero.

    E é aí que entra a famosa Clean Architecture — ou como diria um dev das antigas: o Santo Graal do código desacoplado.

    O que é essa tal de Arquitetura Limpa?

    Resumindo em bom devês:

    É um modelo de organização de software que separa responsabilidades por camadas, isolando regras de negócio de detalhes técnicos como frameworks, bancos e APIs externas.

    Ou seja:

    • Seu código fica mais fácil de manter
    • Dá pra testar sem precisar subir a infra da NASA
    • O front-end pode mudar, o banco também, mas a lógica de negócio continua firme e forte

    Como ela se aplica na vida real com .NET e C#?

    📁 Estrutura básica de um projeto:

    /src
    /Core         → onde moram as regras de negócio (Entities, UseCases)
    /Application  → os contratos, interfaces, DTOs, validações
    /Infra        → implementações de repositórios, serviços externos etc
    /WebApi       → a ponta que recebe requisições e devolve respostas bonitinhas
    

    Spoiler: essa separação NÃO é só pra ficar bonito no GitHub. Ela resolve coisa séria como:

    ✅ Testabilidade

    ✅ Substituir uma lib sem sair quebrando tudo

    ✅ Crescer o projeto sem criar Frankenstein

    E os testes?

    Com essa separação toda, testar fica MUITO mais fácil.

    Você pode testar os UseCases sem depender do banco, da API externa, nem do Azure caindo.

    [Test]
    public void ShouldCalculateCorrectDiscountForPremiumUser()
    {
      var useCase = new CalculateDiscountUseCase();
      var result = useCase.Execute(new PremiumUser());
      Assert.AreEqual(0.2, result.Discount);
    }
    

    A lógica tá desacoplada, logo... testável! É disso que o TDD gosta. 😎

    Mas e os frameworks, ORMs, automappers?

    Todos eles devem girar em torno do seu domínio, e não o contrário.

    Você não deveria mudar sua regra de negócio só porque o EF não curte um relacionamento em cascata.

    Aliás, Uncle Bob (autor da arquitetura) disse:

    "Frameworks são ferramentas, não a fundação do seu software."

    Tradução livre:

    “Pare de fazer o banco ser o rei da festa, quem manda aqui é a regra de negócio.”

    😅 Mas e quando o time acha “overkill”?

    Sim, usar Clean Architecture num CRUD de 3 endpoints talvez seja exagero...

    Mas na real? Projetos raramente ficam pequenos.

    O que começa como um MVP hoje vira um monstro corporativo amanhã.

    Se você já começa com uma base sólida, você ganha tempo, sanidade e respeito do eu-futuro que vai manter isso depois.

    E o papel da IA nisso tudo?

    Hoje, com assistentes como o GitHub Copilot, você consegue gerar muito código boilerplate rápido.

    Mas atenção: IA é ferramenta, não arquiteta.

    Cabe a você saber estruturar bem as camadas, os limites, os contratos.

    Senão vira aquele código “bonito por fora, mas gritando por ajuda por dentro”.

    Compartir
    Recomendado para ti
    Suzano - Python Developer #2
    GFT Start #7 .NET
    GFT Start #7 - Java
    Comentarios (1)
    DIO Community
    DIO Community - 30/07/2025 09:23

    Excelente, Filipi! Que artigo incrível! É fascinante ver como você aborda a dor do "acoplamento tóxico" e apresenta a Clean Architecture como o "Santo Graal do código desacoplado", uma solução para organizar software e isolar regras de negócio de detalhes técnicos.

    Você demonstrou que essa separação por camadas (Core, Application, Infra, WebApi) não é apenas estética, mas resolve problemas sérios como testabilidade, facilidade de substituir bibliotecas e capacidade de crescimento do projeto sem criar um Frankenstein. Sua análise de que testar UseCases se torna muito mais fácil sem depender da infraestrutura, e que frameworks são ferramentas e não a fundação do software, é um insight fundamental.

    Considerando que "o que começa como um MVP hoje vira um monstro corporativo amanhã", qual você diria que é o maior desafio para um desenvolvedor ou uma equipe ao decidir quando e como iniciar um projeto com os princípios da Clean Architecture, especialmente quando a pressão por entregas rápidas é alta e o projeto parece pequeno no início?

    Recomendado para tiSuzano - Python Developer #2