1
resposta

Problemas que achei dessa abordagem

Eu achei muito interessante a parte conceitual da arquitetura limpa. Agora uma coisa que achei ruim no conceito é a de desacoplamento de framework. Por que ao longo do tempo o java evoluiu para melhorar o desenvolvimento e aumentar a produtividade. Fugir dos famigerados XML de configuração e o surgimento das anotações foi um avanço muito bom.

Seguindo o conceito da arquitetura limpa por exemplo, numa aplicação spring-boot, eu não iria usar o javax.validations, nem tao pouco as anotações do jpa, teria que voltar aos arquivos xml, a criação dos objetos por fabricas quando o framework ja seta pra nos automaticamente, uso do lombok para evitar codigo excessivo.

Eu vi outra abordagem que as classes sao interfaces, com o metodo get(), com fabricas para criar os objetos onde existe a implementacao da fabrica e a interface da mesma. Se nesse exemplo ficou com muita classe, nesse outro ficaria com mais classe ainda.

Como foi citado no curso devemos adaptar e escolher a melhor forma que nos atende. Mas o ponto é que na essencia, acaba sendo uma coisa puramente academica e nao comercial.

Mas dentro da minha realidade vou adotar esse conceito. Eu ja utilizo dessa forma na divisao de pacotes. Mas foi comecar a quebrar em modulos, pois tenho uma aplicacao spring-boot mvc com thymeleaf, que vou precisar criar um modulo rest api + jwt ou oauth2. entao o dominio que é onde estao as entidades, repositorios e o service, precisaram virar modulo.

1 resposta

Olá Thiago, tudo bem?

Entendo sua preocupação em relação ao desacoplamento de frameworks e como isso pode afetar a produtividade do desenvolvimento. De fato, a arquitetura limpa pode parecer mais acadêmica do que comercial, mas ela tem seus benefícios a longo prazo, como a facilidade de manutenção e a escalabilidade do sistema.

Porém, é importante lembrar que a arquitetura limpa não é uma solução única para todos os projetos. Cada projeto tem suas particularidades e necessidades específicas, e é preciso adaptar a arquitetura de acordo com essas necessidades. Por exemplo, em um projeto que utiliza o Spring Boot, pode ser mais vantajoso utilizar as anotações do JPA e do Hibernate para facilitar a persistência de dados.

A ideia da arquitetura limpa é justamente permitir essa flexibilidade e adaptabilidade, sem comprometer a qualidade do código. É possível utilizar as boas práticas da arquitetura limpa em conjunto com os frameworks e tecnologias que já conhecemos, sem precisar voltar aos arquivos XML ou criar objetos por fábricas.

Sobre a divisão em módulos, é uma boa prática para manter a organização do código e facilitar a manutenção. A criação de um módulo específico para a API REST é uma boa escolha, pois permite separar as responsabilidades do sistema e torná-lo mais escalável.

Espero ter ajudado a esclarecer suas dúvidas. Lembre-se de adaptar a arquitetura limpa de acordo com as necessidades do seu projeto. Bons estudos!