refatoração de código legado

23
Refatoração de Código Legado, Parte 1 Os Programadores Também Choram...

Upload: caesar-ralf-franz-hoppen

Post on 27-Jun-2015

109 views

Category:

Documents


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Refatoração de Código Legado

Refatoração de Código

Legado, Parte 1

Os Programadores Também Choram...

Page 2: Refatoração de Código Legado

O que vamos ver neste talk

● Setting the mood● Primeiros casos para trabalho sujo● Discussão sobre o que podemos fazer

Page 3: Refatoração de Código Legado

Porque Refatorar?

● Sistemas mudam● Requisitos mudam.● Contemplar mudanças.

Page 4: Refatoração de Código Legado

O que é código legado?

CÓDIGO LEGADO != CÓDIGO RUIM

Page 5: Refatoração de Código Legado

O que é código legado?

CÓDIGO LEGADO = CÓDIGO SEM TESTES.

Page 6: Refatoração de Código Legado
Page 7: Refatoração de Código Legado

Como Refatorar?

Existem duas maneiras de se refatorar código legado.

Page 8: Refatoração de Código Legado

Editar e Rezar

● Padrão de Mercado● Mexer com “cuidadinho”● Teste = “Brincar com o Sistema.”● Deployar e ver o que acontece

Page 9: Refatoração de Código Legado

Cobrir e Mudar

Criando uma rede de segurança

Page 10: Refatoração de Código Legado

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.

Page 11: Refatoração de Código Legado

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

Page 12: Refatoração de Código Legado

O que fazer?

● Utilizar IDEs (extract method, por exemplo)● Quebrar dependências (extract interface)● Refatorações iniciais conservativas

Page 13: Refatoração de Código Legado

Senso Estético do código

Page 14: Refatoração de Código Legado

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.

Page 15: Refatoração de Código Legado

Flash Refactoring

Page 16: Refatoração de Código Legado

Sprout Method

Page 17: Refatoração de Código Legado

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.

Page 18: Refatoração de Código Legado

Sprout Method - Quando Usar?

● Método que não tem como testar.● Classe tem como se colocar em teste.

Page 19: Refatoração de Código Legado

Wrap Class

Page 20: Refatoração de Código Legado

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.

Page 21: Refatoração de Código Legado

Wrap Class - Quando Usar?

● Comportamento novo e independente.● Classe antiga grande e confusa demais.

Page 22: Refatoração de Código Legado

Flash Refactoring

● Prepara o ambiente.● Não adiciona testes no código legado

(ainda).● Ajuda a entender melhor o código.

Page 23: Refatoração de Código Legado

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.