Então você precisa validar suas entidades de domínio e tem duas opções. Talvez a mais clara seria utilizar Exceptions, mas será que ela é a melhor escolha?
Neste artigo vamos abrir espaço para o eterno debate sobre Exceptions VS Domain Notifications e vou colocar alguns motivos nos quais utilizo Domain Notifications nas validações do meu domínio.
Uma exceção oras, algo que não deveria acontecer mas aconteceu, algo quase que imprevisível.
Uma notificação, uma mensagem sobre algum acontecimento no seu domínio.
Sua execução é parada e o evento ocorrendo no momento é gravado no Event Viewer (Caso do IIS).
É gerado um alarde maior, como se fosse um erro na sua aplicação e temos um custo maior, afinal logamos tudo nos eventos do host.
Não! As exceções tem seu uso. Por exemplo, se você não consegue se conectar ao banco de dados, adianta prosseguir com o request? Este é um belo exemplo em que devemos utiliza-las.
Depende! Em tese eu não vejo um cenário onde por exemplo teria uma conexão ao banco no meu domínio.
Juntando isto com o fato da interrupção da execução e do log dos eventos, acaba complicando seu uso.
Imagine um cenário onde você estoura uma exceção no cadastro de clientes, no momento em que valida seu documento por exemplo (Afinal, não podemos salvar um cliente com documento inválido).
Em primeiro lugar, se esta fosse a primeira das suas N validações, seu fluxo seria interrompido aí, acarretando no retorno pra tela, o que incomodaria bastante o usuário, pois fica aquela validação picada. Corrige documento, nome errado corrige nome, data de nascimento errado, e por aí vai.
Em adicional, esta exceção, como comentei anteriormente, consumiria mais recursos, pelo fato de logar nos eventos da máquina, no caso, mais recursos de disco.
Agora imagina um cenário com milhões de cadastros? Ou um simples Brute Force ali, seria o bastante pra lotar a máquina.
Desta forma, quase nunca utilizo Exceptions no meu domínio. Utilizo Notification Pattern, com Flunt.
Outra abordagem que utilizo são os Fail Fast Validations, onde faço uma validação inicial nos meus Commands, removendo possíveis validações bestas das minhas entidades e não sobrecarregando elas. Afinal, partimos do princípio que as informações devem ao menos chegar as entidades.
Trazer a regra de negócio para seu domínio tem um motivo: Testes de Unidade! Se você brigou tanto com o DBA pra sair das PROCS e não faz testes, não adianta nada.
É possível testarmos por exeções (ExpectedException), mas elas são mais falhas, pois se você espera uma exceção do tipo ArgumentNullException no Name do Customer e ocorre uma outra exceção do tipo ArgumentNullException no Email do Customer, seu teste vai dar falso positivo.
Tem mais um mundo de coisas que eu poderia escrever aqui, mas falei tanto sobre isto que até transformei em um curso, o 1975 - Modelando Domínios Ricos, que está gratuito no balta.io.
Este artigo atualmente utiliza a versão 5.0.0-rc.1 do ASP.NET/.NET, o que significa que ainda não...
Saiba como manter seu código limpo (Clean Code) seguindo algumas práticas sugeridas pelo Robert C...
Git é um sistema de controle de versões distribuídas, enquanto GitHub é uma plataforma que tem o ...
O Visual Studio Code é um editor de código criado pela Microsoft e que tem uma grande adoção pela...
O Angular nos fornece um esquema de rotas e navegação completo, simples e fácil de utilizar.
Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.
Aulas disponíveis
horas de conteúdo
Alunos matriculados
Certificados emitidos
Temos mais de 16 cursos totalmente de graça e todos com certificado de conclusão.
Prefere algo mais Premium?
Compra única, parcelada em até
12x no cartão de crédito
Cobrado mensalmente via
cartão de crédito
Precisa de ajuda?
Sim! Basta criar sua conta gratuita no balta.io e começar seus estudos. Nós contamos com diversos cursos TOTALMENTE gratuitos e com certificado de conclusão.
Nós temos cursos gratuitos e pagos, porém você não precisa informar nenhum dado de pagamento
para começar seus estudos gratuitamente conosco. Os cursos gratuitos são completos e com
certificado de conclusão, você não paga nada por eles.
Porém, caso queira algo mais Premium,
você terá acesso à diversos benefícios que vão te ajudar ainda mais em sua carreira.
Siga SEMPRE as nossas Carreiras, elas vão te orientar em todos
os sentidos. Os cursos já estão organizados em categorias e carreiras para facilitar seu
aprendizado.
Nossa sugestão para aprendizado é começar pelo Backend e seguindo para Frontend e Mobile.
Nenhum curso no mundo vai te ensinar tudo, desculpa ser sincero! Os cursos são uma base, eles fornecem por volta de 30% do que você precisa aprender, o resto é com você, com dedicação e MUITA prática.
Java ou .NET? Angular ou React? Xamarin ou Flutter? A resposta é simples e direta: "Você já sabe
o básico?"
Se você ainda não sabe BEM o básico, ou seja, os fundamentos, OOP, SOLID, Clean Code, está
perdendo tempo estudando Frameworks ou até coisas mais avançadas como Docker. Foque nos seus
objetivos primeiro.
Agora se você está indeciso sobre qual Framework estudar, a boa notícia é que o mercado neste
momento está bem aquecido e você tem várias oportunidade. Desta forma o que levaríamos em conta
para tomar esta decisão seria:
Com certeza! O primeiro passo é começar e você pode fazer isto agora mesmo!
Começar de
graça
Receba em primeira mão todas as nossas novidades.