Palestra com foco na introdução ao desenvolvimento orientado à testes, passando em temas como: Design OO; Domain-Driven Design; Modelo Anêmico; Refabricação do código legado; Design Patterns; Princípios OO e boas práticas.
16. Desenvolvimento orientado à testes
Testa
Publica
Codifica
Forma non-TDD
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
A maneira focada em testes
26. … falando sobre design
Table Module
Fácil para gerar automáticamente;
27. … falando sobre design
Table Module
Fácil para gerar automáticamente;
Fácil para developers com pouca
experiência;
28. … falando sobre design
Table Module
Fácil para gerar automáticamente;
Fácil para developers com pouca
experiência;
One size fits all;
29. … falando sobre design
Table Module
Fácil para gerar automáticamente;
Fácil para developers com pouca
experiência;
One size fits all;
Alto acoplamento; viola o SRP;
30. … falando sobre design
Table Module
Fácil para gerar automáticamente;
Fácil para developers com pouca
experiência;
One size fits all;
Alto acoplamento; viola o SRP;
Pouco flexível, e;
31. … falando sobre design
Table Module
Fácil para gerar automáticamente;
Fácil para developers com pouca
experiência;
One size fits all;
Alto acoplamento; viola o SRP;
Pouco flexível, e;
Dados e comportamento estão
separados.
32. … falando sobre design
Table Module
Mais do mesmo: Transaction Script e Service Layer @ PoEAA por Fowler
Domain Model
34. … falando sobre princípios
S
O
L
I
D
ingle Responsibility Principle
35. … falando sobre princípios
S
O
L
I
D
pen Close Principle
ingle Responsibility Principle
36. … falando sobre princípios
S
O
L
I
D
pen Close Principle
ingle Responsibility Principle
iskov Substitution Principle
37. … falando sobre princípios
S
O
L
I
D
pen Close Principle
ingle Responsibility Principle
iskov Substitution Principle
nterface Segregation Principle
38. … falando sobre princípios
S
O
L
I
D
pen Close Principle
ingle Responsibility Principle
iskov Substitution Principle
nterface Segregation Principle
ependency Inversion Principle
45. Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Escreve-se o teste com o mínimo possível;
• Procure focar-se na especificação;
• Não caia na tentação de codificar
algo antes;
• Verifique se o teste falha
sem a implementação, e;
• Certifique-se de que o teste está validando
o que está no documento de especificação.
46. Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Implementação coesa, seguindo um
design simplista baseado no SOLID, por exemplo;
• Não rascunhe. Crie o necessário
para aquela implementação, baseado no
que leu até o momento, e;
• Não rode o teste até ter finalizado.
47. Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Execute o teste.
48. Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Melhore o design do teste.
49. Arquitetura dos testes
Escreve o
teste
Cria a
implementação
Valida a
implementação
Incrementa o
teste
Evolui o design
da
implementação
• Melhore o design da implementação.
72. • Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
73. • Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• #nota TDD é validação de escopo, não
bug finder;
74. • Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• #nota TDD é validação de escopo, não
bug finder;
• Arquitetura é importante ! ;
75. • Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• #nota TDD é validação de escopo, não
bug finder;
• Arquitetura é importante ! ;
• Design patterns não são balas-de-prata,
e;
76. • Entender o que é realmente OO Design;
• Não esquecer dos princípios S.O.L.I.D;
• #nota TDD é validação de escopo, não
bug finder;
• Arquitetura é importante ! ;
• Design patterns não são balas-de-prata,
e;
• Refatore cedo, refatore regularmente *