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 robustas e consistentes

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
 
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 IniciantesOziel Moreira Neto
 
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) melhorDickson S. Guedes
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
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!Aislan Rafael
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no javaPedro Cavalero
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehaveIsmael
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com JavaLuiz Ricardo Silva
 
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...iMasters
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de ReusoDr. Spock
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 
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 JAVAYelken Heckman Ferreira Gonzales
 

Semelhante a Criando entidades robustas e consistentes (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

BFF - Best Friends Forever?
BFF - Best Friends Forever?BFF - Best Friends Forever?
BFF - Best Friends Forever?Everton Tavares
 
Apresentando o Apache Camel
Apresentando o Apache CamelApresentando o Apache Camel
Apresentando o Apache CamelEverton Tavares
 
Arquitetura Orientada a Eventos
Arquitetura Orientada a EventosArquitetura Orientada a Eventos
Arquitetura Orientada a EventosEverton Tavares
 
Minha api deve ser rest?
Minha api deve ser rest?Minha api deve ser rest?
Minha api deve ser rest?Everton Tavares
 
Tdd como uma ferramenta de arquitetura
Tdd como uma ferramenta de arquiteturaTdd como uma ferramenta de arquitetura
Tdd como uma ferramenta de arquiteturaEverton Tavares
 
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?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
 

Criando entidades robustas e consistentes

  • 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.