Alguns dias decidi realizar um projeto bem simples e já que estava estudando arquitetura limpa, implementei utilizando esse tipo de arquitetura.
Basicamente a regra de negócio seria criar uma transferência bancaria de usuário para outro, ai que está, uma coisa simples que decidi complicar, esse tipo de sistema um simples MVC resolveria e me pouparia tempo para concluir.
Vamos lá primeiro precisamos entender pra que utilizar a arquitetura limpa...
Pense em um caso que você tenha uma regra de negócio utilizando JPA, clássico esquema de @Entity numa classe junto com as lógicas de regras de negócio e por acaso algum dia seu gerente diz que o cliente necessita de uma funcionalidade, por mais simples que seja você teria que mexer na classe de persistência e também na de domínio, pois ambas estão na mesma classe, a arquitetura limpa foi proposta pra contornar essas ocasiões, pois as regras de negócio não tem nenhuma ligação direta com o banco de dados pois estão a nível de aplicação, tem casos que usamos regras aplicadas ao banco de dados, mas ai que está, ambas agora estão em classes separadas sem depender de um e de outro.
Foi uma explicação bem rasa, pretendo escrever mais em outro post, mas voltando ao tema do post, decidi utilizar arquitetura limpa nesse projeto e o que eu poderia ter feito em 2 horas, demorei quase 4 horas, pense numa lógica assim:
- Cliente faz transferência -> autoriza em uma api externa e a partir disso que o outro usuário recebe.
Isso em um simples serviço poderia ser feito facilmente somente utilizando uma classe com poucas funções.
O que aprendi com isso?
Antes de começar algum projeto, pense primeiro na sua arquitetura e no nível de complexidade que ele pode chegar, nesse meu caso como era uma simples task, poderia ser feito em um MVC e estaria pronto na metade do tempo.