Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouSalvador Coelho Teves Alterado mais de 7 anos atrás
1
Refatoração: Melhorando código existente AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP
2
Copyleft AgilCoop 2010 Refatoração ● Uma mudança no sistema que não altera seu comportamento funcional, mas melhora sua estrutura interna ● Limpa o código, minimizando as chances de introduzir erros ● Melhora o design depois que o código foi escrito
3
Copyleft AgilCoop 2010 De onde vem? ● Surgiu na comunidade Smalltalk nos anos ~90 ● Desenvolveu-se formalmente na Universidade de Illinois em Urbana-Champaign ● Grupo do Prof. Ralph Johnson – Tese de PhD de William Opdyke (1992) – John Brant e Don Roberts: The Refactoring Browser Tool ● Kent Beck e Martin Fowler na indústria
4
Copyleft AgilCoop 2010 O espírito da refatoração
5
Copyleft AgilCoop 2010 O espírito da refatoração Refatoração
6
Copyleft AgilCoop 2010 O espírito da refatoração Refatoração
7
Copyleft AgilCoop 2010 Primeiro passo: Testes ● Conjunto sólido de testes garante que o comportamento não será alterado ● Refatorações podem adicionar erros – Porém, como são feitas em pequenos passos, é fácil recuperar-se de uma falha ● Testes devem ser automatizados e verificarem o próprio resultado
8
Copyleft AgilCoop 2010 Exemplos
9
Copyleft AgilCoop 2010 Extrair método ● Transforma um fragmento de código em um método com um nome explicativo ● Motivação: – Facilitar o entendimento de trecho de código – Aumentar as chances de reutilização do novo método
10
Copyleft AgilCoop 2010 Renomear variável ● Muda o nome de uma variável para expressar melhor o seu propósito ● Motivação: – Facilitar o entendimento do papel da variável em seu escopo
11
Copyleft AgilCoop 2010 Dinâmica da refatoração ● Cada mudança é simples... ● Mas seu efeito acumulado pode melhorar muito o design do código ● É construindo o sistema que podemos descobrir como melhorá-lo
12
Copyleft AgilCoop 2010 Refatorar para... ● Melhorar o design do software ● Facilitar o entendimento do software ● Encontrar falhas mais facilmente ● Programar mais rapidamente
13
Copyleft AgilCoop 2010 Quando refatorar ● Sempre que você precisar fazer algo e o código atrapalhar mais do que ajudar: – Quando adiciona funcionalidade – Quando corrige um erro – Quando revisa o código – Na terceira cópia, refatore (ou na primeira!) ● Quando o código cheira mau – “If it stinks, change it.” (Se feder, troque-o.) Vó de Beck, sobre como cuidar de bebês
14
Copyleft AgilCoop 2010 Alguns maus cheiros ● Nomes de variáveis obscuros ● Código duplicado ● Método muito longo ● Classe muito grande ● Intimidade inapropriada ● Comentários ● Muitos parâmetros
15
Copyleft AgilCoop 2010 Maus cheiros em testes ● Problemas no código: – Testes obscuros – Presença de condições – Replicação de código – Lógica de testes em produção ● Problemas no comportamento: – Testes frágeis – Testes lentos – Intervenções manuais
16
Copyleft AgilCoop 2010 Exemplos
17
Copyleft AgilCoop 2010 Mover método ● Move um método que utiliza mais funcionalidades de outra classe do que aquela em que se encontra ● Motivação: – Uma classe tem muitos comportamentos – O acoplamento entre classes é muito forte ● O velho método delega ou é removido
18
Copyleft AgilCoop 2010 Usando ferramentas
19
Copyleft AgilCoop 2010 Substituir temporário por chamada ● Substitui o uso de uma variável por uma chamada a um método que realiza as operações ● Motivação: – Variáveis temporárias incentivam seu uso prolongado por terem um escopo limitado
20
Copyleft AgilCoop 2010 Mais um exemplo
21
Copyleft AgilCoop 2010 E o desempenho? “Devemos esquecer as pequenas eficiências em 97% do tempo: otimização prematura é a raiz de todo o mal.” Donald Knuth ● Usar profiling para encontrar gargalos ● Otimizar apenas os gargalos ● Código fatorado: – Compra tempo para otimizar – Aumenta a precisão na otimização
22
Copyleft AgilCoop 2010 Dois chapéus ● Refatoração ● Nova funcionalidade ● Correção de erros
23
Copyleft AgilCoop 2010 Mais exemplos: sugestões?
24
Copyleft AgilCoop 2010 Problemas com refatorações ● Refatoração de sistemas grandes ou enormes ● Refatoração com bancos de dados ● Refatoração de APIs públicas ● Quando não refatorar? – Quando é tão ruim que reescrever é melhor – Quando você está próximo de um prazo
25
Copyleft AgilCoop 2010 Dúvidas? Mariana Bravo marivb@agilcoop.org.br
26
Copyleft AgilCoop 2010 Referências ● M. Fowler, “Refactoring, Improving the design of existing code”, Addison-Wesley Professional, 1999 ● J. Kerievsky, “Refactoring to Patterns”, Addison-Wesley Professional, 2004 ● S. Ambler, P. Sadalage, “Refactoring Databases: Evolutionary Database Design”, Addison-Wesley Professional, 2006 ● www.refactoring.com www.refactoring.com
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.