Esse artigo apareceu primeiro em wellingtonjhn.com

O CQS (Command Query Separation) é um pattern introduzido por Bertrand Meyer no livro Object Oriented Software Construction, com a primeira edição publicada em 1988, e a segunda, revisada e expandida em 1997.

A idéia principal é que os métodos de uma aplicação podem ser comandos (commands) ou consultas (queries), mas nunca ambos.

Temos então:

  • Commands: métodos que alteram estado (mudam valores) sem retornar nenhum valor, e causam efeitos colaterais no sistema.
  • Queries: métodos que retornam valores, mas não alteram estado.
Image for post
Image for post

No exemplo acima, desconsidere questões como injeção de dependências e abstrações, é apenas um exemplo didático, ok?! …

Image for post
Image for post
Foto por Hans-Peter Gauster em Unsplash

Esse artigo apareceu primeiro em wellingtonjhn.com

Como sabemos existem centenas de milhares de APIs no mundo, e a cada dia outras milhares surgem. Cada uma delas tem o seu próprio padrão de mensagens de erro, não existindo um consenso comum.

Você pode conferir um pouco desse problema verificando as APIs do Facebook, Google e Twitter por exemplo. Cada uma delas possui seu próprio formato para mensagens de erro.

Diante disso foi criada a RFC 7807, que é uma especificação que visa padronizar os formatos de mensagens de erro em APIs HTTP, para assim evitar que novos formatos sejam criados. …

Image for post
Image for post
Foto por Daria Nepriakhina em Unsplash

Esse artigo apareceu primeiro em wellingtonjhn.com

É muito comum encontrar nos sistemas corporativos o lançamento de Exceptions ao realizar validações de regras de negócio ou entrada de dados de formulários, afinal de contas é necessário informar ao usuário que algo deu errado.

Porém, o que nós geralmente esquecemos é que Exceptions são inesperadas e elas indicam um erro, uma exceção ao funcionamento normal do sistema, algo que não era para ter acontecido, mas aconteceu.

Uma validação de regra de negócio que potencialmente crie uma mensagem de erro faz parte do funcionamento normal do sistema e é perfeitamente esperado que elas ocorram, e ainda, os usuários podem e certamente vão inserir dados inválidos em seus formulários, então, para mim não faz sentido lançar Exceptions nesses casos. …

About

Wellington Nascimento

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store