SlideShare uma empresa Scribd logo
1 de 42
Os benefícios da
REFATORAÇÃO
de código
EMBELEZANDO O CÓDIGO
PAULA
sudo:~$ whoami -Engenharia Framework
- 1 ano de Itaú
-Arquitetura de Soluções
-2008 - Etec
-Professora, suporte.
-2014 Programadora Java
-Formação em Gestão em Logística
-Comunidades SouJava, Devs JavaGirl e
MNTBS
-MVP Java América Latina
-Escritora DevIniciative e Medium
-Palestrante
15 DE AGOSTO
XCONF
MARTIN FOWLER
Sobre
-Inglês
-Mora nos EUA - Subúrbio de Boston
-University College London - Engenharia Eletrônica e Ciência da Computação
-Autor
-Palestrante
-Aplicações Corporativas, Arquitetura de Software
-ThoughtWorks - desde 2000
-Um dos 17 autores do Manifesto Ágil (https://www.manifestoagil.com.br/)
SISTEMA DE
LOCADORA
Java
GERENCIADOR DE PEÇAS
TEATRAIS
17 NOVAS TÉCNICAS
Java Script
Ed.1 Ed.2
REFATORAÇÃO
O que é
A refatoração é uma técnica para reestruturar um corpo de código
existente, alterando sua estrutura interna sem alterar seu
comportamento externo.
SABER
O que você deve
Cada Refatoração faz
pouco, mas a sequência
dessas transformações
pode produzir uma
reestruturação
significativa.
SABER
O que você deve
Quanto mais complicada a
situação, menores os passos.
Como cada refatoração é
pequena, é menos provável
que dê errado.
NÃO LIGA SE O CÓDIGO É FEIO
O compilador
Por que precisamos fazer um código que seja legível?
Legível pra quem ?
"Qualquer tolo pode escrever código
que um computador possa entender.
Bons programadores escrevem
código que os humanos podem
entender."
by Martin Fowler
Os benefícios da
REFATORAÇÃO
de código
EMBELEZANDO O CÓDIGO
DESIGN,
ORGANIZAÇÃO...
TESTES
TESTES
Totalmente automáticos e que verificam seus próprios resultados.
Executar testes com freqüência.
Executar teste que exercitam o código no qual você está trabalhando pelo
menos a cada poucos minutos;
Execute todos os testes pelo menos diariamente.
Refatoração também deve ser aplicada nos testes quando necessário.
Testes devem ser claros.
Quantidade != Qualidade
UM BOM TESTE DE CÓDIGO
DEVE SER FÁCIL DE SER
ALTERADO.
QUANDO VOCÊ PRECISAR ADICIONAR
UM RECURSO A UM PROGRAMA, MAS O
CÓDIGO NÃO ESTIVER ESTRUTURADO
DE MANEIRA CONVENIENTE, REFATORE O
PROGRAMA PARA FACILITAR A ADIÇÃO
DO RECURSO E, EM SEGUIDA, ADICIONE
O RECURSO.
REFATORAÇÃO MELHORA O
DESIGN DO SOFTWARE
A REFATORAÇÃO TORNA
O SOFTWARE MAIS FÁCIL
DE ENTENDER
A REFATORAÇÃO AJUDA A
ENCONTRAR BUGS
A REFATORAÇÃO ME AJUDA A
PROGRAMAR MAIS
RAPIDAMENTE
REFATORAÇÃO
Tipos
REFATORAÇÃO DE COMPREENSÃO:
TORNANDO O CÓDIGO MAIS FÁCIL
DE ENTENDER
REFATORAÇÃO DE
COLETA DE LIXO
REFATORAÇÃO PLANEJADA
E OPORTUNISTA OU A
LONGO PRAZO
SE FEDE,
MUDE
Código duplicado
Função ou Método Longo
Lista longa de parâmetros
Dados Globais
Dados Mutáveis
Mudança Divergente
Cirurgia por espingarda
Inveja do Recurso
Agrupamento de Dados
Obsessão Primitiva
Switches Repetidos
Loops
Classe grande
COMENTÁRIOS
/**Quando você sentir necessidade de
escrever um comentário, primeiro tente
refatorar o código para que qualquer
comentário se torne supérfluo.**/
POR ONDE COMEÇAR
Extrair Função
Extrair Variável
Função Inline
Variável Inline
Alterar Declaração de Função
Renomear variável
Encapsular Variável
Introduzir Objeto de Parâmetro
Combinar Funções na Classe
Combine Functions into Transform
Fase dividida
EXTRAIR FUNÇÃO
SEPARAÇÃO ENTRE INTENÇÃO E
IMPLEMENTAÇÃO.
NO O QUÊ, NÃO NO COMO
AS FUNÇÕES NÃO DEVEM SER MAIORES DO
QUE CABEM NA TELA.
QUALQUER CÓDIGO USADO MAIS DE UMA VEZ
DEVE SER COLOCADO EM SUA PRÓPRIA FUNÇÃO
A OTIMIZAÇÃO DE COMPILADORES GERALMENTE FUNCIONA
MELHOR COM FUNÇÕES MAIS CURTAS, QUE PODEM SER
ARMAZENADAS EM CACHE COM MAIS FACILIDADE..
PEQUENAS FUNÇÕES FUNCIONAM APENAS
SE OS NOMES FOREM BONS
EXTRAIR VARIÁVEL
VARIÁVEIS LOCAIS PODEM AJUDAR A DIVIDIR A
EXPRESSÃO EM ALGO MAIS GERENCIÁVEL
PERMITE ENTENDER MELHOR O PROPÓSITO DO QUE ESTÁ
ACONTECENDO.
FACILITA PARA DEPURAÇÃO
FUNÇÃO INLINE
O NOME NÃO SE COMUNICA MAIS DO
QUE A PRÓPRIA EXPRESSÃO.
EXEMPLO
Gerenciador de uma companhia
de atores teatrais que
participam de vários eventos
apresentando peças teatrais.
ALTERAÇÃO NO
FORMATO DA FATURA
PARA HTML
Exemplo
ANTES DE INICIAR A REFATORAÇÃO,
VERIFIQUE SE VOCÊ TEM UM
CONJUNTO SÓLIDO DE TESTES.
ESSES TESTES DEVEM SER
VERIFICADOS AUTOMATICAMENTE.
ANTES DE INICIAR A REFATORAÇÃO,
VERIFIQUE SE VOCÊ TEM UM
CONJUNTO SÓLIDO DE TESTES.
ESSES TESTES DEVEM SER
VERIFICADOS AUTOMATICAMENTE.
AO PROGRAMAR, SIGA A REGRA DE ACAMPAMENTO:
SEMPRE DEIXE A BASE DE CÓDIGO MAIS SAUDÁVEL DO
QUE QUANDO A ENCONTROU..
OBRIGADA!
@psanrosa13
@soujava
@devsjavagirl
Sobre pontos citados na Palestra :
Site onde vocês podem criar uma conta de teste para ler
vários livros legais, lá tem todo conteúdo mais avançado!
https://learning.oreilly.com/home/
Fonte da palestra :
https://refactoring.com/
Link para vocês baixarem o primeiro capítulo do livro grátis:
https://www.thoughtworks.com/pt/books

Mais conteúdo relacionado

Mais procurados

Refatoração básica e obrigatória
Refatoração básica e obrigatóriaRefatoração básica e obrigatória
Refatoração básica e obrigatóriadtelaroli
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaGabriel Schade Cardoso
 
Plsql - Conceitos Básicos
Plsql - Conceitos BásicosPlsql - Conceitos Básicos
Plsql - Conceitos BásicosDanilo Braga
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoAdriano Teixeira de Souza
 

Mais procurados (7)

Refatoração básica e obrigatória
Refatoração básica e obrigatóriaRefatoração básica e obrigatória
Refatoração básica e obrigatória
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-dia
 
Clean code
Clean codeClean code
Clean code
 
Plsql - Conceitos Básicos
Plsql - Conceitos BásicosPlsql - Conceitos Básicos
Plsql - Conceitos Básicos
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
 
424928
424928424928
424928
 

Semelhante a Refatoracao de codigo

Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptGiacomelliFerrarezzi
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012Jorge Oleques
 
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Danilo Sato
 
Refatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoRefatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoJuciellen Cabrera
 
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...tdc-globalcode
 
Java one
Java oneJava one
Java oneIsmael
 
Tópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsTópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsSaulo Lopes
 
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)Igor Abade
 

Semelhante a Refatoracao de codigo (20)

Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
 
Refatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoRefatoração - aquela caprichada no código
Refatoração - aquela caprichada no código
 
Introdução ao LINQ
Introdução ao LINQIntrodução ao LINQ
Introdução ao LINQ
 
Dojo solid
Dojo solidDojo solid
Dojo solid
 
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
 
Spring Roo
Spring RooSpring Roo
Spring Roo
 
Java one
Java oneJava one
Java one
 
Spring Data Neo4j
Spring Data Neo4jSpring Data Neo4j
Spring Data Neo4j
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Tópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsTópicos Emergentes - DevOps
Tópicos Emergentes - DevOps
 
Livro cisco
Livro ciscoLivro cisco
Livro cisco
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
 

Mais de Paula Santana

Boas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaBoas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaPaula Santana
 
Como começar quando se esta começando?
Como começar quando se esta começando?Como começar quando se esta começando?
Como começar quando se esta começando?Paula Santana
 
Desvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosDesvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosPaula Santana
 
Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Paula Santana
 
Como começas quando se está começando
Como começas quando se está começandoComo começas quando se está começando
Como começas quando se está começandoPaula Santana
 
Desenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosDesenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosPaula Santana
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaPaula Santana
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantesPaula Santana
 
Facilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaFacilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaPaula Santana
 
Como uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherComo uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherPaula Santana
 
Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Paula Santana
 
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Paula Santana
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaPaula Santana
 
4 revolucao industrial
4 revolucao industrial4 revolucao industrial
4 revolucao industrialPaula Santana
 
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaDesenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaPaula Santana
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcPaula Santana
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Paula Santana
 

Mais de Paula Santana (20)

Boas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaBoas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de moda
 
Como começar quando se esta começando?
Como começar quando se esta começando?Como começar quando se esta começando?
Como começar quando se esta começando?
 
Desvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosDesvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventos
 
Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14
 
Como começas quando se está começando
Como começas quando se está começandoComo começas quando se está começando
Como começas quando se está começando
 
Desenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosDesenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventos
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em java
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantes
 
Facilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaFacilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações Java
 
Como uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherComo uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulher
 
Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?
 
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
4 revolucao industrial
4 revolucao industrial4 revolucao industrial
4 revolucao industrial
 
Conhecendo o Jnosql
Conhecendo o JnosqlConhecendo o Jnosql
Conhecendo o Jnosql
 
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaDesenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdc
 
Testes de contrato
Testes de contratoTestes de contrato
Testes de contrato
 
Spring Rest
Spring RestSpring Rest
Spring Rest
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
 

Refatoracao de codigo

  • 1. Os benefícios da REFATORAÇÃO de código EMBELEZANDO O CÓDIGO
  • 2. PAULA sudo:~$ whoami -Engenharia Framework - 1 ano de Itaú -Arquitetura de Soluções -2008 - Etec -Professora, suporte. -2014 Programadora Java -Formação em Gestão em Logística -Comunidades SouJava, Devs JavaGirl e MNTBS -MVP Java América Latina -Escritora DevIniciative e Medium -Palestrante
  • 4. MARTIN FOWLER Sobre -Inglês -Mora nos EUA - Subúrbio de Boston -University College London - Engenharia Eletrônica e Ciência da Computação -Autor -Palestrante -Aplicações Corporativas, Arquitetura de Software -ThoughtWorks - desde 2000 -Um dos 17 autores do Manifesto Ágil (https://www.manifestoagil.com.br/)
  • 5.
  • 6. SISTEMA DE LOCADORA Java GERENCIADOR DE PEÇAS TEATRAIS 17 NOVAS TÉCNICAS Java Script Ed.1 Ed.2
  • 7. REFATORAÇÃO O que é A refatoração é uma técnica para reestruturar um corpo de código existente, alterando sua estrutura interna sem alterar seu comportamento externo.
  • 8. SABER O que você deve Cada Refatoração faz pouco, mas a sequência dessas transformações pode produzir uma reestruturação significativa.
  • 9. SABER O que você deve Quanto mais complicada a situação, menores os passos. Como cada refatoração é pequena, é menos provável que dê errado.
  • 10. NÃO LIGA SE O CÓDIGO É FEIO O compilador Por que precisamos fazer um código que seja legível? Legível pra quem ?
  • 11. "Qualquer tolo pode escrever código que um computador possa entender. Bons programadores escrevem código que os humanos podem entender." by Martin Fowler
  • 12. Os benefícios da REFATORAÇÃO de código EMBELEZANDO O CÓDIGO DESIGN, ORGANIZAÇÃO...
  • 14. TESTES Totalmente automáticos e que verificam seus próprios resultados. Executar testes com freqüência. Executar teste que exercitam o código no qual você está trabalhando pelo menos a cada poucos minutos; Execute todos os testes pelo menos diariamente. Refatoração também deve ser aplicada nos testes quando necessário. Testes devem ser claros. Quantidade != Qualidade
  • 15. UM BOM TESTE DE CÓDIGO DEVE SER FÁCIL DE SER ALTERADO.
  • 16. QUANDO VOCÊ PRECISAR ADICIONAR UM RECURSO A UM PROGRAMA, MAS O CÓDIGO NÃO ESTIVER ESTRUTURADO DE MANEIRA CONVENIENTE, REFATORE O PROGRAMA PARA FACILITAR A ADIÇÃO DO RECURSO E, EM SEGUIDA, ADICIONE O RECURSO.
  • 18. A REFATORAÇÃO TORNA O SOFTWARE MAIS FÁCIL DE ENTENDER
  • 19. A REFATORAÇÃO AJUDA A ENCONTRAR BUGS
  • 20. A REFATORAÇÃO ME AJUDA A PROGRAMAR MAIS RAPIDAMENTE
  • 22. REFATORAÇÃO DE COMPREENSÃO: TORNANDO O CÓDIGO MAIS FÁCIL DE ENTENDER
  • 25. SE FEDE, MUDE Código duplicado Função ou Método Longo Lista longa de parâmetros Dados Globais Dados Mutáveis Mudança Divergente Cirurgia por espingarda Inveja do Recurso Agrupamento de Dados Obsessão Primitiva Switches Repetidos Loops Classe grande
  • 26. COMENTÁRIOS /**Quando você sentir necessidade de escrever um comentário, primeiro tente refatorar o código para que qualquer comentário se torne supérfluo.**/
  • 27. POR ONDE COMEÇAR Extrair Função Extrair Variável Função Inline Variável Inline Alterar Declaração de Função Renomear variável Encapsular Variável Introduzir Objeto de Parâmetro Combinar Funções na Classe Combine Functions into Transform Fase dividida
  • 29. SEPARAÇÃO ENTRE INTENÇÃO E IMPLEMENTAÇÃO. NO O QUÊ, NÃO NO COMO AS FUNÇÕES NÃO DEVEM SER MAIORES DO QUE CABEM NA TELA. QUALQUER CÓDIGO USADO MAIS DE UMA VEZ DEVE SER COLOCADO EM SUA PRÓPRIA FUNÇÃO
  • 30. A OTIMIZAÇÃO DE COMPILADORES GERALMENTE FUNCIONA MELHOR COM FUNÇÕES MAIS CURTAS, QUE PODEM SER ARMAZENADAS EM CACHE COM MAIS FACILIDADE.. PEQUENAS FUNÇÕES FUNCIONAM APENAS SE OS NOMES FOREM BONS
  • 32. VARIÁVEIS LOCAIS PODEM AJUDAR A DIVIDIR A EXPRESSÃO EM ALGO MAIS GERENCIÁVEL PERMITE ENTENDER MELHOR O PROPÓSITO DO QUE ESTÁ ACONTECENDO. FACILITA PARA DEPURAÇÃO
  • 33. FUNÇÃO INLINE O NOME NÃO SE COMUNICA MAIS DO QUE A PRÓPRIA EXPRESSÃO.
  • 34. EXEMPLO Gerenciador de uma companhia de atores teatrais que participam de vários eventos apresentando peças teatrais.
  • 35. ALTERAÇÃO NO FORMATO DA FATURA PARA HTML Exemplo
  • 36. ANTES DE INICIAR A REFATORAÇÃO, VERIFIQUE SE VOCÊ TEM UM CONJUNTO SÓLIDO DE TESTES. ESSES TESTES DEVEM SER VERIFICADOS AUTOMATICAMENTE.
  • 37. ANTES DE INICIAR A REFATORAÇÃO, VERIFIQUE SE VOCÊ TEM UM CONJUNTO SÓLIDO DE TESTES. ESSES TESTES DEVEM SER VERIFICADOS AUTOMATICAMENTE.
  • 38.
  • 39. AO PROGRAMAR, SIGA A REGRA DE ACAMPAMENTO: SEMPRE DEIXE A BASE DE CÓDIGO MAIS SAUDÁVEL DO QUE QUANDO A ENCONTROU..
  • 40.
  • 42. Sobre pontos citados na Palestra : Site onde vocês podem criar uma conta de teste para ler vários livros legais, lá tem todo conteúdo mais avançado! https://learning.oreilly.com/home/ Fonte da palestra : https://refactoring.com/ Link para vocês baixarem o primeiro capítulo do livro grátis: https://www.thoughtworks.com/pt/books