Pular para o conteúdo
SaaS

Regra de negócio ≠ invariante do mundo | guia prático

Ticket price positivo é regra de negócio? Não: preço negativo não existe no mundo. Como separar invariantes universais de regras do seu domínio de

Resposta direta

Chamar tudo de regra de negócio esconde o que é só sanidade do universo — modelege os dois de forma diferente. Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje.

O exemplo do preço do ticket

Porque como que um preço vai ser negativo? Não tem como o preço de alguma coisa ser negativo. Não é algo específico do meu negócio, entende?

Outra regra de negócio, que talvez fique mais claro pra vocês. Não posso criar um evento no mesmo dia latitude e longitude. Porque é algo específico da minha aplicação, ó.

Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje. Eu não posso criar um evento no Maracanã às 18 horas de hoje.

O que é regra de negócio de verdade

Se vocês pegarem essa ideia, turma, diferença de regra de negócio, business rules validations e inputs validations, isso é muito importante, turma, Porque a gente. Vai dividir essas varidações entre diferentes camadas daqui a pouquinho. Então, turma, é muito importante você ter essa noção, tá?

Porque como que um preço vai ser negativo? Não tem como o preço de alguma coisa ser negativo. Não é algo específico do meu negócio, entende? Outra regra de negócio, que talvez fique mais claro pra vocês.

Não posso criar um evento no mesmo dia latitude e longitude. Porque é algo específico da minha aplicação, ó. Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje.

Leitura útil

Chamar tudo de regra de negócio esconde o que é só sanidade do universo — modelege os dois de forma diferente. Use o trecho acima como restrição, não como citação ornamental.

Por que a distinção importa no código

Porque como que um preço vai ser negativo? Não tem como o preço de alguma coisa ser negativo. Não é algo específico do meu negócio, entende? Outra regra de negócio, que talvez fique mais claro pra vocês.

Não posso criar um evento no mesmo dia latitude e longitude. Porque é algo específico da minha aplicação, ó. Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje.

Eu não posso criar um evento no Maracanã às 18 horas de hoje. Se vocês pegarem essa ideia, turma, diferença de regra de negócio, business rules validations e inputs validations, isso é muito importante, turma, Porque a gente. Vai dividir essas varidações entre diferentes camadas daqui a pouquinho. Então, turma, é muito importante você ter essa noção, tá?

Onde validar cada tipo de restrição

Porque como que um preço vai ser negativo? Não tem como o preço de alguma coisa ser negativo. Não é algo específico do meu negócio, entende? Outra regra de negócio, que talvez fique mais claro pra vocês.

Não posso criar um evento no mesmo dia latitude e longitude. Porque é algo específico da minha aplicação, ó. Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje.

Eu não posso criar um evento no Maracanã às 18 horas de hoje. Se vocês pegarem essa ideia, turma, diferença de regra de negócio, business rules validations e inputs validations, isso é muito importante, turma, Porque a gente. Vai dividir essas varidações entre diferentes camadas daqui a pouquinho. Então, turma, é muito importante você ter essa noção, tá?

Exercício com outros campos de evento

Porque como que um preço vai ser negativo? Não tem como o preço de alguma coisa ser negativo. Não é algo específico do meu negócio, entende? Outra regra de negócio, que talvez fique mais claro pra vocês.

Não posso criar um evento no mesmo dia latitude e longitude. Porque é algo específico da minha aplicação, ó. Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje.

Eu não posso criar um evento no Maracanã às 18 horas de hoje. Se vocês pegarem essa ideia, turma, diferença de regra de negócio, business rules validations e inputs validations, isso é muito importante, turma, Porque a gente. Vai dividir essas varidações entre diferentes camadas daqui a pouquinho. Então, turma, é muito importante você ter essa noção, tá?

Próximo passo

Escolha uma métrica (tempo, retries, conversão ou qualidade aceita) e rode 7 dias antes de escalar o padrão.

Perguntas frequentes

Por que isso importa?

Porque validações e mensagens de erro mudam — e o modelo de domínio fica mais limpo.

Preço > 0 nunca é regra de negócio?

No exemplo, é invariante do mundo. Sua taxa de serviço, por outro lado, pode ser regra.

Onde colocar no código?

Invariantes cedo (input); regras de domínio no agregado/serviço que conhece o contexto.

Serve só para eventos?

Não. Qualquer modelo de domínio se beneficia da distinção.

O que é regra de negócio de verdade

Se vocês pegarem essa ideia, turma, diferença de regra de negócio, business rules validations e inputs validations, isso é muito importante, turma, Porque a gente. Vai dividir essas varidações entre diferentes camadas daqui a pouquinho. Então, turma, é muito importante você ter essa noção, tá? Porque como que um preço vai ser negativo? Não tem como o preço de alguma coisa ser negativo. Não é algo específico do meu negócio, entende? Outra regra de negócio, que talvez fique mais claro pra vocês. Não posso criar um evento no mesmo dia latitude e longitude. Porque é algo específico da minha aplicação, ó. Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje.

Por que a distinção importa no código

Porque como que um preço vai ser negativo? Não tem como o preço de alguma coisa ser negativo. Não é algo específico do meu negócio, entende? Outra regra de negócio, que talvez fique mais claro pra vocês. Não posso criar um evento no mesmo dia latitude e longitude. Porque é algo específico da minha aplicação, ó. Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje. Eu não posso criar um evento no Maracanã às 18 horas de hoje. Se vocês pegarem essa ideia, turma, diferença de regra de negócio, business rules validations e inputs validations, isso é muito importante, turma, Porque a gente. Vai dividir essas varidações entre diferentes camadas daqui a pouquinho. Então, turma, é muito importante você ter essa noção, tá?

Onde validar cada tipo de restrição

Porque como que um preço vai ser negativo? Não tem como o preço de alguma coisa ser negativo. Não é algo específico do meu negócio, entende? Outra regra de negócio, que talvez fique mais claro pra vocês. Não posso criar um evento no mesmo dia latitude e longitude. Porque é algo específico da minha aplicação, ó. Eu não posso criar um evento no mesmo dia, vou colocar aqui na mesma data, tá? Por exemplo, eu tenho um evento no, sei lá, no estádio Maracanã, latitude e longitude e tal, às 18 horas de hoje. Eu não posso criar um evento no Maracanã às 18 horas de hoje. Se vocês pegarem essa ideia, turma, diferença de regra de negócio, business rules validations e inputs validations, isso é muito importante, turma, Porque a gente. Vai dividir essas varidações entre diferentes camadas daqui a pouquinho. Então, turma, é muito importante você ter essa noção, tá?