Pessoal, fiquei com uma dúvida conceitual sobre a parte de exceptions na AdocaoService.
No exemplo do curso, a regra de negócio (como “não permitir solicitar adoção de um pet já adotado”) está sendo validada diretamente na service. Funciona, claro, mas estudando um pouco de arquitetura hexagonal + DDD, vi que esse tipo de regra talvez fizesse mais sentido dentro do domínio, por exemplo na própria entidade Pet ou em um domain service.
A ideia seria que o próprio domínio garantisse suas invariantes, algo como:
o Pet sabe se pode ou não ser adotado
a aplicação (service/use case) só orquestra o fluxo
Isso evitaria duplicação de regras e deixaria o modelo mais consistente ao longo do tempo.
Entendo que no contexto didático simplificar colocando na service pode ajudar no começo, mas queria saber:
- Em um cenário mais próximo do mundo real, vocês também levariam esse tipo de regra para o domínio?
- Ou manteriam na service mesmo por questão de simplicidade?
Curioso pra ouvir a opinião de vocês e do instrutor.