Executando verificação de segurança...
7

Excelente conteúdo, parabéns!
Vou salvar para revisitar sempre que for contruir algo novo.
Mas fiquei com dois pontos de duvida.
1 - Onde ficariam os logs?
2 - Lançar exceções no domain é uma boa pratica? atualmente eu estou utilizando a abordagem de criar um contexto de notificação no dominio, e nele fica contido tudo que seria por exemplo uma exception.

Carregando publicação patrocinada...
5

Valeu demais pelo feedback, e ótimo que você levantou esses dois pontos — eles realmente ficaram como brechas no artigo.

  • Sobre logs:
    Uma boa abordagem é usar Domain Events.
    Você levanta o evento dentro da entidade ou aggregate (PaymentApproved, CustomerCreated, etc.) e depois trata isso num listener desacoplado que pode fazer o log, mandar alerta, ou qualquer outro efeito colateral.

A vantagem é que o domínio continua limpo — sem saber que existe ILogger — e você ainda ganha observabilidade.
Tô considerando escrever um artigo só sobre Domain Events, e esse tópico com certeza entra lá.

  • Sobre exceções no domínio:
    Esse é outro papo bom.
    A minha visão: exceção é pra erro inesperado, não pra fluxo alternativo.
    Se um pagamento não pode ser aprovado por causa de uma regra de negócio, o ideal é retornar um Result ou algo semelhante.
    Isso deixa o código mais funcional, mais testável e evita dependência do try/catch como mecanismo de controle de fluxo.

Tem várias libs que ajudam nisso: OneOf, LanguageExt, FluentResults, entre outras. Mas mesmo sem lib, um Result simples já resolve bem.

Valeu pelo comentário e por puxar esses temas — são os próximos tópicos naturais da série.
Um abraço! 👊🏼