refatoração de código legado

Post on 27-Jun-2015

109 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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.

top related