Refactoring to patterns

288 visualizações

Publicada em

Brown Bag Lunch do livro Refactoring to Patterns

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
288
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Refactoring to patterns

  1. 1. Refactoring to Patterns Joshua Kerievsky
  2. 2. Cronograma- Code Smells- O que são patterns- Factory (Headfirst)- Command (Headfirst)- Null Object (Headfirst)- Conclusão- Todos os patterns acima em problemas reais
  3. 3. Por que ?- Factory- Command- Null Object
  4. 4. Code Smells- Duplicated Code- Long Method- Conditional Complexity- Primitive Obsession- Indecent Exposure- Shotgun Surgery- Large Class
  5. 5. Duplicated Code- O pior tipo de smell- Pode estar explícito ou implícito no código- Kent Beck- SRP (Single Responsibility Principle)
  6. 6. Long Method- Por que os métodos devem ser pequenos ?- Legibilidade- Fácil extensão- Mantém o código simples e evita duplicação- Métodos podem compartilhar a mesma lógica- Fácil testar
  7. 7. Conditional Complexity- Problema se sua lógica condicional aumenta- Problema se sua lógica condicional écomplicada
  8. 8. Primitive Obsession- Uso excessivo de valores primitivos- Tipo não seguro (Entidades)- Classes de dinheiro != double- String
  9. 9. Shotgun Surgery- Uma feature n classes- Várias pequenas mudanças- Alexandre Freire
  10. 10. Indecent Exposure- Exposição de métodos que não sãoimportantes ou são mas de maneira indireta- Aumenta complexidade do código- Fabrica.getFuncionarios().getChefes().getSubordinados().getNome();
  11. 11. Patterns- O que são ?- Devemos aprender todos ?- Patternite
  12. 12. Factory- MotivaçãoCentralização da criação de objetos diminuindosua exposição e duplicação de código.
  13. 13. Factory- Qual a idéia ?
  14. 14. Factory It´s coding time- PizzaStore- SimplePizzaFactory- PizzaTestDrive
  15. 15. Factory Trade off+ Consolida a lógica de criação e configuração depreferências+ Desacopla o cliente da lógica de criação-Complica o design onde uma simples instância seriasuficiente
  16. 16. Command- MotivaçãoPermite desacoplar a ação do objeto querealmente executa.
  17. 17. CommandProblema do controle remoto genérico e suasações.
  18. 18. CommandClasses de botões do nosso controle remoto
  19. 19. Command- Qual a idéia ?
  20. 20. Command It´s coding time- RemoteLoader- RemoteControl- StereoOnWithCDCommand- StereoOffCommand- Stereo- Command
  21. 21. Command TradeOff+ Mecanismo simples de executar várioscomportamentos diferentes de uma maneira uniforme+ Permite mudança em tempo de execução mudarquem vai ser executado e como+ Código simples de implementar- Complica um design onde um if seria suficiente
  22. 22. Null ObjectE se não tivermos funções suficientes paratodos os botões do nosso controle ?
  23. 23. Null Object- MotivaçãoUsado para lidar com multiplas validações decampos nulos dentro do código
  24. 24. Null Object- Qual a idéia ?
  25. 25. Null Object It´s coding time- NoCommand- RemoteControl- RemoteLoader
  26. 26. Null Object Trade off+ Previne null pointer+ Simplifica o código minimizando verificação de nulo- Complica o design que algumas verificações resolveriam
  27. 27. Conclusão- Não é chato como GOF- Divertido de ler, principalmente se você codarjunto- Não é para decorar
  28. 28. It´s show time
  29. 29. CommandReplace Conditional Dispatcher with Command- Client- CatalogApp* Compose Method
  30. 30. Null ObjectIntroduce Null Object- Navigation Applet
  31. 31. FactoryMove creation knowledge to a Factory- StringNode- Teste- StringParser
  32. 32. Projetohttps://github.com/maviteixeira/brownBagRefactoringToPatterns

×