SlideShare uma empresa Scribd logo
1 de 18
Criando entidades “like
a boss”
Everton EmilioTavares
Quem sou?
Programador por paixão desde
2002, onde começou com
PHP5. Desde 2007 trabalha
com Java no desenvolvimento
de soluções empresariais,
principalmenteWeb. Acredita
no desenvolvimento de
software como uma forma de
artesanato, e que o
conhecimento e a disciplina é
fundamental para a criação de
um software de qualidade.
Sumula de
Futebol
Talk is cheap.
Show me the
code!
https://github.com/ezidio/ticnova-
sumula
Like a Boss??
Consistência
Característica de um corpo do
ponto de vista da homogeneidade,
coerência, firmeza, compacidade,
resistência, densidade etc. dos seus
elementos constituintes.
A entidade
deve garantir
seu estado!
Campos obrigatórios;
Bloquear modificações
externas;
Bibliotecas
 // java.util (7+)
variavel = Objects.requireNonNull(objeto);
 // Google Guava
Preconditions.checkState(this.status.equals(PedidoStatus.ABERTO));
Preconditions.checkArgument(valorMinimo <= valorMaximo);
variavel = Preconditions.checkNotNull(objeto);
 // Commons-lang 3.4
variavel =Validate.notNull(objeto);
variavel =Validate.notEmpty(objeto);
variavel =Validate.notBlank(objeto);
Validate.validState(this.status.equals(PedidoStatus.ABERTO));
Validate.isTrue(valorMinimo <= valorMaximo);
 //Java assert – Não use!
assert valorMinimo <= valorMaximo;
https://www.securecoding.cert.org/confluence/display/java/MET01-
J.+Never+use+assertions+to+validate+method+arguments
InnerBuilder
Fugindo do
modelo
anêmico
Entidades e
agregados
Regras...
 7 - Mínimo de jogadores;
 11 - Máximo de jogadores;
 12 - Máximo de reservas;
 5 - Máximo de jogadores estrangeiros;
 3 - Máximo de substituições no brasileirão;
 Não pode dar gol a jogador que não está em
campo;
Escolhendo
corretamente
seus
Identificadores
UserStory
 Dada uma escalação com 6 ou menos jogadores titulares
Quando adiciona-la na sumula
Então uma exceção deve ser lançada;
 Dada uma escalação de 7 a 11 jogadores titulares
Quando adiciona-la na sumula
Então a escalação deve ser aceita;
 Dada uma escalação com 12 ou mais jogadores titulares
Quando adiciona-la na sumula
Então uma exceção deve ser lançada.
Perguntas?
Obrigado!
 everton.tavares.dev@gmail.com
 everton.tavares@db1.com.br
 Twitter: @ezidiu

Mais conteúdo relacionado

Semelhante a Criando Entidades "Like a Boss"

Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Adriano Teixeira de Souza
 

Semelhante a Criando Entidades "Like a Boss" (20)

Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Entity Framework
Entity FrameworkEntity Framework
Entity Framework
 
Aula 01 - POO - Bem Vindo a Objetolândia!
Aula 01 - POO - Bem Vindo a Objetolândia!Aula 01 - POO - Bem Vindo a Objetolândia!
Aula 01 - POO - Bem Vindo a Objetolândia!
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no java
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Introdução ao Entity Framework 4
Introdução ao Entity Framework 4Introdução ao Entity Framework 4
Introdução ao Entity Framework 4
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehave
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com Java
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de Reuso
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
ApresentaçãO De Java
ApresentaçãO De JavaApresentaçãO De Java
ApresentaçãO De Java
 

Mais de Everton Tavares

Mais de Everton Tavares (7)

BFF - Best Friends Forever?
BFF - Best Friends Forever?BFF - Best Friends Forever?
BFF - Best Friends Forever?
 
Apresentando o Apache Camel
Apresentando o Apache CamelApresentando o Apache Camel
Apresentando o Apache Camel
 
Arquitetura Orientada a Eventos
Arquitetura Orientada a EventosArquitetura Orientada a Eventos
Arquitetura Orientada a Eventos
 
Minha api deve ser rest?
Minha api deve ser rest?Minha api deve ser rest?
Minha api deve ser rest?
 
Tdd como uma ferramenta de arquitetura
Tdd como uma ferramenta de arquiteturaTdd como uma ferramenta de arquitetura
Tdd como uma ferramenta de arquitetura
 
Meu Cliente não permite DevOps. E agora?
Meu Cliente não permite DevOps. E agora?Meu Cliente não permite DevOps. E agora?
Meu Cliente não permite DevOps. E agora?
 
Expression Language 3.0
Expression Language 3.0Expression Language 3.0
Expression Language 3.0
 

Último

Último (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Criando Entidades "Like a Boss"

  • 1. Criando entidades “like a boss” Everton EmilioTavares
  • 2. Quem sou? Programador por paixão desde 2002, onde começou com PHP5. Desde 2007 trabalha com Java no desenvolvimento de soluções empresariais, principalmenteWeb. Acredita no desenvolvimento de software como uma forma de artesanato, e que o conhecimento e a disciplina é fundamental para a criação de um software de qualidade.
  • 3.
  • 4.
  • 6. Talk is cheap. Show me the code! https://github.com/ezidio/ticnova- sumula
  • 8. Consistência Característica de um corpo do ponto de vista da homogeneidade, coerência, firmeza, compacidade, resistência, densidade etc. dos seus elementos constituintes.
  • 9. A entidade deve garantir seu estado! Campos obrigatórios; Bloquear modificações externas;
  • 10. Bibliotecas  // java.util (7+) variavel = Objects.requireNonNull(objeto);  // Google Guava Preconditions.checkState(this.status.equals(PedidoStatus.ABERTO)); Preconditions.checkArgument(valorMinimo <= valorMaximo); variavel = Preconditions.checkNotNull(objeto);  // Commons-lang 3.4 variavel =Validate.notNull(objeto); variavel =Validate.notEmpty(objeto); variavel =Validate.notBlank(objeto); Validate.validState(this.status.equals(PedidoStatus.ABERTO)); Validate.isTrue(valorMinimo <= valorMaximo);  //Java assert – Não use! assert valorMinimo <= valorMaximo; https://www.securecoding.cert.org/confluence/display/java/MET01- J.+Never+use+assertions+to+validate+method+arguments
  • 14. Regras...  7 - Mínimo de jogadores;  11 - Máximo de jogadores;  12 - Máximo de reservas;  5 - Máximo de jogadores estrangeiros;  3 - Máximo de substituições no brasileirão;  Não pode dar gol a jogador que não está em campo;
  • 16. UserStory  Dada uma escalação com 6 ou menos jogadores titulares Quando adiciona-la na sumula Então uma exceção deve ser lançada;  Dada uma escalação de 7 a 11 jogadores titulares Quando adiciona-la na sumula Então a escalação deve ser aceita;  Dada uma escalação com 12 ou mais jogadores titulares Quando adiciona-la na sumula Então uma exceção deve ser lançada.