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.
Top comments (2)
Achei confuso e vago esse texto. Pelo que entendi, você questionou o uso da arquitetura por ter que mudar 2 classes? Pra ficar mais claro, sugiro descrever com mais detalhes como foi implementado ou usar um modelo de código como exemplo. Será que o problema está na arquitetura ou na implementação dela? Quando você diz "pense primeiro na sua arquitetura e no nível de complexidade que ele pode chegar", o código mais abstrato pode ser justificado pelo segundo motivo que você citou, de um dia a tarefa ficar muito complexa.
PS: Em "pense numa lógica assim:", particularmente não entendi essa lógica. O que significa o símbolo "->"? É uma chamada síncrona ? Assíncrona ? Ou nenhum dos dois ? Pra descrever fluxos de execução, use desenhos, diagramas, preferencialmente com simbologia bem conhecida.
Opa, blz? Valeu por comentar
Desculpa se não fui muito claro, é que acontece muitas vezes de nós programadores estarmos estudando algo e queremos já implementar em tudo no nosso dia a dia e não pensar se aquele tipo de arquitetura é a mais adequada para aquele nível/complexidade de sistema.
No contexto que estava, era uma simples tarefa, fui na emoção e decidi implementar utilizando arquitetura limpa kkkkkkk