SlideShare uma empresa Scribd logo
1 de 44
Refatoração

Davi Marques       William “Kina”
O que é?
O que é?
• Processo de alteração de um sistema de
  software de modo que o comportamento
  externo não mude, mas que sua estrutura
  interna seja melhorada.
Refatoração
• Então....
Refatoração
• Então....
Refatoração
• Espere! Não é bem assim. Tem um detalhe...
Refatoração
• Espere! Não é bem assim. Tem um detalhe...
• O sistema deve estar funcionando antes de
  refatorar!
Refatoração
• Espere! Não é bem assim. Tem um detalhe...
• O sistema deve estar funcionando antes de
  refatorar!
• Evite refatorar o código perto do prazo final.
Refatoração
• Espere! Não é bem assim. Tem um detalhe...
• O sistema deve estar funcionando antes de
  refatorar!
• Evite refatorar o código perto do prazo final.
• Se tiver tudo cagado, as vezes é melhor fazer
  um novo sistema ;)
Refatoração
• Como garantir que continua funcionando?
Refatoração
• Como garantir que continua funcionando?
Refatoração
• Mas testes automatizados não são custosos?!
Refatoração
• Mas testes automatizados não são custosos?!
Refatoração
Refatoração X Testes Automatizados
Refatoração
Refatoração X Testes Automatizados
Refatoração
• Quais os passos para refatorar?
Refatoração
• Quais os passos para refatorar?
• Procure os “bad smells” (maus cheiros)
Refatoração
• Como eu encontro um bad smell?
Refatoração
• Como eu encontro um bad smell?
• Não existe uma formula que diz que parte do
  código é um bad smell.
Refatoração
• Como eu encontro um bad smell?
• Não existe uma formula que diz que parte do
  código é um bad smell.
Refatoração
• Resumindo...
Refatoração
• Resumindo...
Exemplos de Bad Smells
•   Duplicated Code (Código Duplicado)
•   Long Method (Método Longo)
•   Large Class (Classe Grande)
•   Comments (Comentários)
•   Long Parameter List (Lista de Parâmetros Longa)
Catalogo de Refatorações
Catalogo de Refatorações




http://www.refactoring.com
Formato do Catalogo
• Nome da refatoração.
• Resumo da situação na qual ela é necessária e
  o que ela faz.
• Motivação para usá-la (e quando não usá-la).
• Mecânica. descrição passo a passo.
• Exemplos para ilustrar o uso.
Exemplos Refatorações
•   Extract Method (Extrair Método)
•   Pull Up Method (Subir Método na Hierarquia )
•   Substitute Algorithm (Substituir Algoritimo)
•   Replace Magic
•   Rename Method (Renomear Método)
•   Decompose Conditional (Decompor
    Condicional)
Extract Method
Extract Method
Exemplos Refatorações
•   Extract Method (Extrair Método)
•   Pull Up Method (Subir Método na Hierarquia )
•   Substitute Algorithm (Substituir Algoritimo)
•   Replace Magic Number
•   Rename Method (Renomear Método)
•   Decompose Conditional (Decompor
    Condicional)
Pull Up Method
Exemplos Refatorações
•   Extract Method (Extrair Método)
•   Pull Up Method (Subir Método na Hierarquia )
•   Substitute Algorithm (Substituir Algoritimo)
•   Replace Magic Number
•   Rename Method (Renomear Método)
•   Decompose Conditional (Decompor
    Condicional)
Substitute Algorithm
Exemplos Refatorações
•   Extract Method (Extrair Método)
•   Pull Up Method (Subir Método na Hierarquia )
•   Substitute Algorithm (Substituir Algoritimo)
•   Replace Magic Number
•   Rename Method (Renomear Método)
•   Decompose Conditional (Decompor
    Condicional)
Resumo
Resumo
• Um software é quase como um jardim.
Resumo
• Um software é quase como um jardim.
Resumo
• Um software é quase como um jardim.
Resumo
• Um software é quase como um jardim.
Resumo
• Um software é quase como um jardim.
Resumo
• Usar catalogo sistematicamente.
• Refatorar auxilia a manter o código legível e
  modificável.
• Um código legível e modificavel é mais fácil de
  ser mantido.
Lembrete
• Refatoração != refazer
• Refatoração != corrigir
• Refatoração != performance
Perguntas?

Mais conteúdo relacionado

Destaque

Destaque (6)

Relaxation
RelaxationRelaxation
Relaxation
 
Relaxation Techniques
Relaxation TechniquesRelaxation Techniques
Relaxation Techniques
 
Relaxation method
Relaxation methodRelaxation method
Relaxation method
 
Relaxation Techniques
Relaxation Techniques Relaxation Techniques
Relaxation Techniques
 
Muscle contraction
Muscle contractionMuscle contraction
Muscle contraction
 
Relaxation Techniques
Relaxation TechniquesRelaxation Techniques
Relaxation Techniques
 

Semelhante a Refatoração

Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinarZG Soluções
 
Refatoração de código
Refatoração de códigoRefatoração de código
Refatoração de códigoPaulo Souza
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de ProgramaçãoPaulo Souza
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de ProgramaçãoCOTIC-PROEG (UFPA)
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Revisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilRevisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilDanilo Sato
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Padrões de refatoração
Padrões de refatoraçãoPadrões de refatoração
Padrões de refatoraçãoThiago Pereira
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraCDS
 
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...Elias Souza
 
Test é para os fracos
Test é para os fracosTest é para os fracos
Test é para os fracosThiago Avelino
 
Palestra Campus Party Brasil 2014 sobre Overclock e Otimizações em Android
Palestra Campus Party Brasil 2014 sobre Overclock e Otimizações em AndroidPalestra Campus Party Brasil 2014 sobre Overclock e Otimizações em Android
Palestra Campus Party Brasil 2014 sobre Overclock e Otimizações em AndroidProfessor Isidro
 
Testando seu código JavaScript com Jasmine
Testando seu código JavaScript com JasmineTestando seu código JavaScript com Jasmine
Testando seu código JavaScript com JasmineRaphael A. F. Cardoso
 

Semelhante a Refatoração (20)

Refatoração de Código Legado
Refatoração de Código LegadoRefatoração de Código Legado
Refatoração de Código Legado
 
Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinar
 
Refatoração de código
Refatoração de códigoRefatoração de código
Refatoração de código
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Clean code
Clean codeClean code
Clean code
 
Refatoração
RefatoraçãoRefatoração
Refatoração
 
Refatoração
RefatoraçãoRefatoração
Refatoração
 
Potencializando a qualidade de código
Potencializando a qualidade de códigoPotencializando a qualidade de código
Potencializando a qualidade de código
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Revisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilRevisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia Ágil
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Padrões de refatoração
Padrões de refatoraçãoPadrões de refatoração
Padrões de refatoração
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + ScrumDDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
 
Test é para os fracos
Test é para os fracosTest é para os fracos
Test é para os fracos
 
Palestra Campus Party Brasil 2014 sobre Overclock e Otimizações em Android
Palestra Campus Party Brasil 2014 sobre Overclock e Otimizações em AndroidPalestra Campus Party Brasil 2014 sobre Overclock e Otimizações em Android
Palestra Campus Party Brasil 2014 sobre Overclock e Otimizações em Android
 
Testando seu código JavaScript com Jasmine
Testando seu código JavaScript com JasmineTestando seu código JavaScript com Jasmine
Testando seu código JavaScript com Jasmine
 

Refatoração

Notas do Editor

  1. [DAVI/KINA] Trabalhamos neste material sobre refatoração Fico muito feliz de ter ficado entre os mais procurados;.... Trata-se de um assunto importante e que deve estar no dia dia do dev. QUALIDADE qualidade do código facilidade de entendimento, consequentemente facilita a manutenção Teste para ver se o tamanho do texto está bom para ler. Bla bla bla bala; Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer urna nibh, accumsan ut ultrices nec, ullamcorper eget metus. Suspendisse commodo est vel augue tempor eu fringilla dui scelerisque. Sed ut magna orci. Aliquam erat volutpat. Nunc sed arcu feugiat elit laoreet pretium. Nullam nibh enim, fringilla sed molestie eu, ultrices a magna. Donec sit amet pretium dolor. Donec eget nisl orci, et auctor erat. Nunc eget sapien id urna facilis
  2. [DAVI/KINA] Formação Na ACCMM desde
  3. DAVI É simples,
  4. KINA Já que muda só internamente e não afeta nada!
  5. KINA Vamos refatorar todo o código!
  6. KINA
  7. KINA Para refatorar é preciso que o código funcione a maior parte do tempo. Não faz sentido melhorar o entendimento do código que não está certo! Falar do exemplo do parede com infiltração.
  8. DAVI Afinal, você está mudando o funcionamento interno. Se for algo de uma estrutura básica do sistema, pode acabar não dando tempo de testar cenários críticos.
  9. KINA LEMBRAR QUE A REFATORAÇÃO DEVE SER FEITA PREFERENCIALMENTE EM PEQUENAS RAJADAS E DURANTE O DESENVOLVIMENTO
  10. DAVI – PERGUNTAR PARA O KINA Como garantir de forma fácil que não está afetando o restante do código.
  11. KINA Existindo testes automáticos aumenta muito a probabilidade de não aparecer bugs. Dá mais segurança para fazer as alterações.
  12. DAVI – QUESTIONANDO O PESSOAL?
  13. KINA Quanto tempo você perde para garantir que a sua alteração tá funcionando? Falar de um exemplo simples (login, preparar cenário, etc.)
  14. DAVI Os testes automatizados não são pré-requisitos Só aumenta trabalho para garantir que o sistema manteve o comportamento após a refatoração Ou seja, você terá que garantir manualmente :P
  15. DAVI
  16. KINA
  17. KINA
  18. KINA
  19. Como?!?!? Sim... Pois é não existe uma forma sistemica que descreva que algo é ruim ou não, pois depende do contexto. E o “olhar humano” é muito mais eficiente. Pelo menos por enquanto :D
  20. Normalmente é quando você olha o código e tem a essa reação...
  21. DAVI Codigo duplicado: numero um do ranking das não conformidades Metodo longo: exemplo empresa de TV por assinatura
  22. KINA Apesar dos mau cheiros não serem sistemicamente “cheiraveis”, a sua solução é. Perguntar quem trabalha com Java/.net, usou Eclipse/NetBeans/IntelliJ/VS Studio Release Eclipse 2.1 ano de 2003 VS desde 2005 tem. No 2003 vc tem plugins.
  23. DAVI Falar sobre o catalogo disponivel nos livros e site.
  24. DAVI Catalogo do livro segue este padrão, e tbem no site
  25. DAVI Há casos que até uma linha de código compensa extrair Mau cheiro: código comentado A ideia é que um metodo tenha apenas um objetivo
  26. DAVI
  27. DAVI
  28. KINA
  29. KINA
  30. DAVI
  31. DAVI
  32. KINA DAVI: Converter projeto procedural em Objetos
  33. Perguntar quantos sistemas sem nenhuma manutenção e que estão em produção vcs conhecem.
  34. KINA Se não cuidar pode:
  35. Aparecer bugs
  36. Pode ser descontinuado, ou seja, morrer.
  37. Ficar torto, e uma vez torto é muito dificil arrumar tudo.
  38. Pode chegar um nível que você não consiga dar manutenção no sistema sem que gaste muito tempo.
  39. DAVI
  40. KINA