📎 Webclip
Melhorando validações no domínio com melhores assinaturas de método e lógica funcional (Parte 2)
O texto retoma o cenário de recuperar uma entidade, aplicar uma mudança e persistir o resultado, para mostrar que assinaturas comuns escondem muitas dúvidas sobre null, exceptions e falhas de banco. A proposta é tornar esses contratos explícitos com tipos mais ricos e com um fluxo de chamada que expõe o caminho de sucesso sem misturar tratamento de erro.
Fichamento#
- Um repositório com
GetById(string id)eSave(Employee employee)deixa em aberto o que acontece com id inválido, ausência de entidade e falhas de conexão. - A assinatura
Try<Exception, Employee> GetById(Untrusted<string> id)deixa explícito que a recuperação pode falhar e que o id recebido não é confiável. - O texto sugere usar um tipo de domínio como
Cpfno lugar destring, para enriquecer o modelo e afastar a possibilidade de retornarnullquando não houver entidade correspondente. - Em vez de uma entidade mutável, a proposta é usar
Try<Exception, Employee> RaiseSalary(decimal amount), indicando que a mudança pode falhar e produzir uma nova instância atualizada. - Para persistência,
Try<Exception, Unit> Save(Employee employee)torna visível que o método pode falhar, em vez de esconder isso atrás devoid. - A versão revisada encadeia
GetById,RaiseSalaryeSavecomBind, ou com o atalhoThen, mantendo o fluxo de sucesso e deixando as falhas expressas no tipo retornado.
