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

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

Refatoração: Melhorando a Qualidade de Código Pré-Existente Cursos de Verão 2008 – IME/USP Mariana Bravo & Hugo Corbucci.

Apresentações semelhantes


Apresentação em tema: "Refatoração: Melhorando a Qualidade de Código Pré-Existente Cursos de Verão 2008 – IME/USP Mariana Bravo & Hugo Corbucci."— Transcrição da apresentação:

1 Refatoração: Melhorando a Qualidade de Código Pré-Existente Cursos de Verão 2008 – IME/USP www.agilcoop.org.br Mariana Bravo & Hugo Corbucci

2 copyleft agilcoop 20082 Refatoração ● Uma modificação no sistema que não altera o seu comportamento funcional, mas melhora sua estrutura interna. ● Limpa o código minimizando as chances de introduzir erros. ● Melhorar o design depois que o código foi escrito.

3 copyleft agilcoop 20083 De onde vem? ● Surgiu na comunidade de Smalltalk nos anos 80/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 (XP) na indústria.

4 copyleft agilcoop 20084 O espírito da refatoração Antes

5 copyleft agilcoop 20085 O espírito da refatoração (refatoração) Antes

6 copyleft agilcoop 20086 O espírito da refatoração (refatoração) Antes Depois

7 copyleft agilcoop 20087 Exemplos

8 copyleft agilcoop 20088 Extrair método ● Transforma um fragmento de código em um método com um nome explicativo. ● Motivação: – Diminuir e facilitar o entendimento de trecho de código. – Aumentar as chances de reutilização do novo método.

9 copyleft agilcoop 20089 Renomear variável ● Muda o nome de uma variável para expressar melhor o seu propósito ● Motivação: – Não é fácil entender a função da variável em seu escopo

10 copyleft agilcoop 200810 Dinâmica da refatoração ● Cada mudança é simples... ● Mas seu efeito acumulado pode melhorar muito o design e o código ● É construindo o sistema que podemos descobrir como melhorá-lo

11 copyleft agilcoop 200811 Refatorar para... ● Melhorar o design do software ● Tornar o software mais fácil de entender ● Encontrar falhas mais facilmente ● Programar mais rapidamente

12 copyleft agilcoop 200812 Quando refatorar ● Sempre que você precisar fazer algo e o código estiver atrapalhando: – Na terceira vez, refatore – Quando adiciona funcionalidade – Quando corrige um erro – Quando revisa o código ● Quando o código cheira mau – “If it stinks, change it.” (Se feder, troque-o.) Grandma Beck, falando sobre como cuidar de bebês.

13 copyleft agilcoop 200813 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

14 copyleft agilcoop 200814 Primeiro passo: testes ● Antes de refatorar, tenha um conjunto sólido de testes para garantir que o comportamento não seja alterado. ● Refatorações podem adicionar erros. – porém, como são feitas em pequenos passos, é fácil recuperar-se de uma falha ● Os testes ajudam a detectar erros se eles forem criados. ● Testes têm que ser automáticos e ser capazes de se auto-verificarem.

15 copyleft agilcoop 200815 Exemplos

16 copyleft agilcoop 200816 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.

17 copyleft agilcoop 200817 Usando ferramentas

18 copyleft agilcoop 200818 Substituir temporário com chamada ● Substitui o uso de um 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

19 copyleft agilcoop 200819 Mais um exemplo

20 copyleft agilcoop 200820 E o desempenho? "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." (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 os gargalos ● Otimizar apenas estes gargalos ● Código fatorado: – Compra tempo para otimizar – Aumenta a precisão na otimização

21 copyleft agilcoop 200821 Dois chapéus ● Refatoração ● Adicionando funcionalidades ● Corrigindo erros

22 copyleft agilcoop 200822 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!

23 copyleft agilcoop 200823 Catálogo de Refatorações ● [Fowler, 2000] “Refatoração”, contém 72 refatorações. ● Análogo aos padrões de desenho orientado a objetos [Gamma et al. 1995] (GoF). ● [Kerievsky, 2004] “Refactoring to patterns”, catálogo com 27 refatorações que aplicam padrões!

24 copyleft agilcoop 200824 Formato de refatorações nos catálogos ● Nome da refatoração. ● Resumo da situação na qual ela é necessária e o que ela faz. ● Motivação para usá-la (e quando não usá-la). ● Mecânica, i.e., descrição passo a passo. ● Exemplos para ilustrar o uso.

25 copyleft agilcoop 200825 Ferramentas para Refatoração ● Refactoring Browser Tool. ● Dá suporte automatizado para uma série de refatorações. ● Pode melhorar em muito a produtividade. ● Existem há vários anos para Smalltalk. ● Já há várias para C++ e Java. ● Iniciativas acadêmicas (Ralph@UIUC). ● Agora, integrado no Eclipse e no Visual Works.

26 copyleft agilcoop 200826 Referências ● www.refactoring.com www.refactoring.com ● Martin Fowler. Refactoring: improving the design of existing code. ● Kerievsky. Refactoring to patterns


Carregar ppt "Refatoração: Melhorando a Qualidade de Código Pré-Existente Cursos de Verão 2008 – IME/USP Mariana Bravo & Hugo Corbucci."

Apresentações semelhantes


Anúncios Google