refatoração de código legado
DESCRIPTION
Slides sobre Tech Talk de código legado dado na Elo7.TRANSCRIPT
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 acontece
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 de arquivos.○ Conversa com a rede.○ Precisa de alguma propriedade especial para rodá-
los.
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
O que fazer?
● Utilizar IDEs (extract method, por exemplo)● Quebrar dependências (extract interface)● Refatorações iniciais conservativas
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. Escreva testes.5. Faça as mudanças e refatore.
Flash Refactoring
Sprout Method
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.
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 sem testes.● Não quebra velhas dependências.
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 melhoria
deve ser constante.