Refatoração de Código
Legado, Parte 1
Os Programadores Também Choram...
O que vamos ver neste talk
● Setting the mood
● Primeiros casos para trabalho sujo
● Discussão sobre o que podemos fazer
Porque Refatorar?
● Sistemas mudam
● Requisitos mudam.
● Contemplar mudanças.
O que é código legado?
CÓDIGO LEGADO != CÓDIGO RUIM
O que é código legado?
CÓDIGO LEGADO = CÓDIGO SEM TESTES.
Como Refatorar?
Existem duas maneiras de se refatorar código
legado.
Editar e Rezar
● Padrão de Mercado
● Mexer com “cuidadinho”
● Teste = “Brincar com o Sistema.”
● Deployar e ver o que acon...
Cobrir e Mudar
Criando uma rede de segurança
Testes Unitários
● São os mais importantes!
● Não são testes unitários:
○ Conversa com o Banco de Dados.
○ Acessa sistema ...
Dilema do Código Legado
"Quando temos que modificar código, nós
devemos fazer testes. Para fazermos testes,
nós normalment...
O que fazer?
● Utilizar IDEs (extract method, por exemplo)
● Quebrar dependências (extract interface)
● Refatorações inici...
Senso Estético do código
Algoritmo Mudança Código Legado
1. Identifique pontos de mudança.
2. Ache pontos de teste.
3. Quebre dependências.
4. Escr...
Flash Refactoring
Sprout Method
Sprout Method
Vantagem:
● Pouco invasivo.
● Adiciona método com testes.
● Separa novo do antigo.
Desvantagem
● Classe anti...
Sprout Method - Quando Usar?
● Método que não tem como testar.
● Classe tem como se colocar em teste.
Wrap Class
Wrap Class
Vantagem:
● Pouco invasivo.
● Adiciona método com testes.
● Separa novo do antigo.
Desvantagem
● Classe antiga ...
Wrap Class - Quando Usar?
● Comportamento novo e independente.
● Classe antiga grande e confusa demais.
Flash Refactoring
● Prepara o ambiente.
● Não adiciona testes no código legado
(ainda).
● Ajuda a entender melhor o código.
Conclusão
● Sistemas não melhoram da noite pro dia.
● Melhorias tem que ser constantes.
● É muita coisa para se fazer. Mas...
Refatoração de Código Legado
Próximos SlideShares
Carregando em…5
×

Refatoração de Código Legado

336 visualizações

Publicada em

Slides sobre Tech Talk de código legado dado na Elo7.

0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

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

Nenhuma nota no slide

Refatoração de Código Legado

  1. 1. Refatoração de Código Legado, Parte 1 Os Programadores Também Choram...
  2. 2. O que vamos ver neste talk ● Setting the mood ● Primeiros casos para trabalho sujo ● Discussão sobre o que podemos fazer
  3. 3. Porque Refatorar? ● Sistemas mudam ● Requisitos mudam. ● Contemplar mudanças.
  4. 4. O que é código legado? CÓDIGO LEGADO != CÓDIGO RUIM
  5. 5. O que é código legado? CÓDIGO LEGADO = CÓDIGO SEM TESTES.
  6. 6. Como Refatorar? Existem duas maneiras de se refatorar código legado.
  7. 7. Editar e Rezar ● Padrão de Mercado ● Mexer com “cuidadinho” ● Teste = “Brincar com o Sistema.” ● Deployar e ver o que acontece
  8. 8. Cobrir e Mudar Criando uma rede de segurança
  9. 9. Testes Unitários ● São os mais importantes! ● Não são testes unitários: ○ Conversa com o Banco de Dados. ○ Acessa sistema de arquivos. ○ Conversa com a rede. ○ Precisa de alguma propriedade especial para rodá- los.
  10. 10. Dilema do Código Legado "Quando temos que modificar código, nós devemos fazer testes. Para fazermos testes, nós normalmente precisamos modificar o código." Michale C. Feathers
  11. 11. O que fazer? ● Utilizar IDEs (extract method, por exemplo) ● Quebrar dependências (extract interface) ● Refatorações iniciais conservativas
  12. 12. Senso Estético do código
  13. 13. Algoritmo Mudança Código Legado 1. Identifique pontos de mudança. 2. Ache pontos de teste. 3. Quebre dependências. 4. Escreva testes. 5. Faça as mudanças e refatore.
  14. 14. Flash Refactoring
  15. 15. Sprout Method
  16. 16. Sprout Method Vantagem: ● Pouco invasivo. ● Adiciona método com testes. ● Separa novo do antigo. Desvantagem ● Classe antiga sem testes. ● Não quebra velhas dependências.
  17. 17. Sprout Method - Quando Usar? ● Método que não tem como testar. ● Classe tem como se colocar em teste.
  18. 18. Wrap Class
  19. 19. Wrap Class Vantagem: ● Pouco invasivo. ● Adiciona método com testes. ● Separa novo do antigo. Desvantagem ● Classe antiga sem testes. ● Não quebra velhas dependências.
  20. 20. Wrap Class - Quando Usar? ● Comportamento novo e independente. ● Classe antiga grande e confusa demais.
  21. 21. Flash Refactoring ● Prepara o ambiente. ● Não adiciona testes no código legado (ainda). ● Ajuda a entender melhor o código.
  22. 22. Conclusão ● Sistemas não melhoram da noite pro dia. ● Melhorias tem que ser constantes. ● É muita coisa para se fazer. Mas melhoria deve ser constante.

×