Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Refactoring com Padrões de Projeto

169 views

Published on

Refactoring com Padrões de Projeto

Published in: Software
  • Be the first to comment

Refactoring com Padrões de Projeto

  1. 1. REFACTORING COM PADRÕES DE PROJETO REINALDO JR 2016
  2. 2. •  Mestre em Engenharia Elétrica e Computação, Pós-Graduado em Liderança e Coaching, Graduado em Ciências da Computação •  Leciona em cursos de pós-graduação, MBAs e Graduação. •  Diretor de Projetos da empresa INLOC SISTEMAS - Goiânia-GO •  Professor e Coordenador do Curso de Sistemas de Informação da Faculdade Delta - Goiânia-GO •  + 15 anos com projetos de soOware | + 10 anos com equipes de projetos de soOwae | + 9 anos como professor universitário
  3. 3. ROTEIRO 1. ObjeXvo Geral 2. Cenário Atual 3. Conceitos 4. Observer 5. Decorator 6. Strategy 7. Boas PráXcas
  4. 4. #É possível Construir Software Autosustentável ?
  5. 5. DEFINIÇÃO “Autosustentável” “Que pode se sustentar sozinho” “h>ps://pt.wikConary.org/wiki/ autosustentável”
  6. 6. DEFINIÇÃO “Autosustentável” “Criar uma estrutura de códigos, que impacte o menos possível em cada refactoring realizado” “Reinaldo Jr J”
  7. 7. OBJETIVO GERAL
  8. 8. • Apoia-los a implementar códigos, seguindo padrões refinados, já t e s t a d o s e e x p e r i m e t a d o s . GaranCndo assim, uma melhor qualidade de código e diminuindo o impacto das constantes mudanças. OBJETIVO GERAL
  9. 9. #O QUE TE IMPEDE DE FAZER ISTO?
  10. 10. CENÁRIO ATUAL
  11. 11. CENÁRIO ATUAL
  12. 12. CENÁRIO ATUAL
  13. 13. #E QUAL É O RESULTADO?
  14. 14. CENÁRIO ATUAL
  15. 15. CENÁRIO ATUAL
  16. 16. #DEFINIÇÕES
  17. 17. REFACTORING “Refactoring is a controlled technique for improving the design of an exis:ng code base. Its essence is applying a series of s m a l l b e h a v i o r - p r e s e r v i n g transformaCons, each of which "too small to be worth doing". However the cumula:ve effect of each of these transforma:ons is quite significant” “MarCn Fowler”
  18. 18. PADRÃO • Um padrão é uma solução para um determinado problema em um contexto. • Porém um padrão não descreve qualquer solução, mas uma solução que já tenha sido uFlizada com sucesso em mais de um contexto.
  19. 19. PADRÕES DE PROJETO “Cada padrão descreve um problema no nosso ambiente e o núcleo da sua solução, de tal forma que você possa uClizar esta solução mais de um milhão de vezes, sem nunca fazê-lo da mesma maneira” Cristopher Alexander
  20. 20. #Quanto mais padrões eu uXlizar, melhor vai ficar o meu código?”
  21. 21. #PADRÕES DE PROJETO
  22. 22. MANTRA DEV BAIXO ACOPLAMENTO E ALTA COESÃO
  23. 23. PADRÕES DE PROJETO • CreaFonal • Abstraem o processo de instanciação dos objetos • Strucutural • Se preocupam com a forma como classes e objetos são compostos para formar estruturas maiores • Behavioral • Se preocupam com algoritmos e a atribuição de responsabilidades entre objetos.
  24. 24. OBSERVER “Define uma dependência um-para- muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes são noCficados e atualizados automaCcamente. Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto” Erich Gamma
  25. 25. CASE – “BOLSA DE VALORES”
  26. 26. OBSERVER
  27. 27. DECORATOR “ D i n a m i c a m e n t e , a g r e g a r responsabilidades adicionais a objetos. Os Decorators fornecem uma alternaCva flexível ao uso de subclasses para extensão de funcionalidades.” Erich Gamma
  28. 28. CASE - FRETE
  29. 29. DECORATOR
  30. 30. STRATEGY “Definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. Strategy permite que o algoritmo varie independentemente dos clientes que o uXlizam” Erich Gamma
  31. 31. CASE – “FORMAS DE PAGAMENTO”
  32. 32. STRATEGY
  33. 33. STRATEGY
  34. 34. BOAS PRÁTICAS 1.  Codifique orientado a interfaces e não a implementação 2.  Evite a herança e favoreça a composição 3.  Obtenha baixo acoplamento e alta coesão 4.  UXlize padrões de projeto 5.  Não tenha medo de refactoring
  35. 35. DICAS DE LIVRO
  36. 36. DICAS DE LIVRO
  37. 37. DICAS DE LIVRO
  38. 38. www.reinaldojr.com
  39. 39. rsjrnet@gmail.com www.reinaldojr.com

×