A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Refatoração: Melhorando código existente AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP.

Apresentações semelhantes


Apresentação em tema: "Refatoração: Melhorando código existente AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP."— Transcrição da apresentação:

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


Carregar ppt "Refatoração: Melhorando código existente AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP."

Apresentações semelhantes


Anúncios Google