Aplicação
Montar as sete peças em um todo coerente.
Aplicação completa
Saber escrever um controller, um repositório, um formulário e uma regra de segurança não basta para saber escrever uma aplicação. As peças tomadas separadamente são simples; é a montagem delas que produz as dificuldades, porque faz surgir perguntas que nenhuma lição isolada coloca.
Onde colocar a regra "não se pode emprestar uma obra cujos exemplares estão todos emprestados"? Na entidade, que conhece seus exemplares, mas não os empréstimos em andamento dos outros? No service, que enxerga tudo, mas então mistura duas responsabilidades? No controller, que não tem nada a ver com isso? A escolha tem consequências duradouras: mal posicionada, essa regra será contornada no dia em que a API fizer a mesma operação sem passar pelo mesmo caminho.
Outra pergunta que só aparece na montagem: uma operação que toca duas entidades — decrementar a disponibilidade e criar o empréstimo — deve ter sucesso ou falhar por inteiro. Se a fronteira transacional estiver no lugar errado, a aplicação produzirá ocasionalmente estados inconsistentes que ninguém saberá reproduzir.
Esta última lição constrói, portanto, uma funcionalidade completa — o empréstimo de uma obra — atravessando todas as camadas e justificando cada posicionamento. Em seguida, ela acrescenta o tratamento de erros nas páginas, a internacionalização das mensagens e os testes de integração, que verificam o conjunto em vez das partes.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão