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

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

Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.

Apresentações semelhantes


Apresentação em tema: "Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones."— Transcrição da apresentação:

1 Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones

2 O que é Refatoração? Refatoração é o processo de alteração de um sistema de software de modo que o comportamento externo do código não mude, mas que sua estrutura interna seja melhorada. É uma maneira disciplinada de aperfeiçoar o código que minimiza a chance de introdução de falhas. Em essência, quando você usa refatoração, você está melhorando o projeto do código após este ter sido escrito.

3 Um catálogo de Refatorações
Tratando Generalizações

4 Subir atributo na hierarquia

5 Subir atributo na hierarquia
Duas subclasses têm o mesmo atributo Mova o atributo para a superclasse

6 Subir atributo na hierarquia

7 Subir método na hierarquia

8 Subir método na hierarquia
Você tem métodos nas subclasses que produzem resultados idênticos . Mova-os para a superclasse. Motivação: Evitar a duplicação de código

9 Exemplo O método createBill é idêntico para ambas as classes

10 Exemplo Não posso mover o método createBill na hierarquia porque o método chargeFor é diferente em cada subclasse Solução: declarar o método chargeFor como abstrato na superclasse

11 Subir código do construtor na hierarquia

12 Subir código do construtor na hierarquia
Você tem construtores nas subclasses com código quase idêntico. Crie um construtor para a superclasse; chame-o a partir de métodos das subclasses. Motivação: O código dos construtores é quase idêntico, mas você não pode usar "subir método na hierarquia" porque métodos construtores não podem ser herdados

13 Descer Método na Hierarquia

14 Descer Método na Hierarquia
Algum comportamento na superclasse é relevante apenas para algumas de suas subclasses. Mova-o para essas subclasses Motivação: Um código específico faz sentido apenas em algumas das subclasses

15 Descer Método na Hierarquia

16 Extrair Subclasse

17 Extrair Subclasse Uma classe tem características que são usadas apenas em algumas instâncias. Crie uma subclasse para esse subconjunto de características. Motivação: O principal motivo para usar Extrair Subclasse é a observação de que uma classe tem comportamento usado por algumas das instâncias da classe mas não por outras.

18 Extrair Subclasse

19 Extrair Subclasse

20 Extrair Superclasse

21 Extrair Superclasse Você tem duas classes com características semelhantes. Crie uma superclasse e mova as características em comum para ela. Motivação: Evitar a duplicação de código

22 Extrair Superclasse

23 Extrair Superclasse

24 Extrair Interface

25 Extrair Interface Diversos clientes usam o mesmo subconjunto da interface de uma classe ou duas classes tem parte de suas interfaces em comum. Extraia o subconjunto para uma interface.

26 Extrair Interface Motivação:
Somente parte da interface de uma classe faz sentido para um grupo de clientes Uma classe tem de trabalhar com qualquer classe que trate um grupo de requisições Interfaces são uma boa solução quando uma classe tem papéis distintos em diferentes situações.

27 Extrair Interface

28 Extrair Interface

29 Condensar Hierarquia

30 Condensar Hierarquia Uma superclasse e uma subclasse não são muito diferentes. Junte-as.

31 Criar Método Roteiro

32 Criar Método Roteiro Você tem dois métodos em subclasses diferentes que executam passos semelhantes na mesma ordem, mas esses passos são diferentes. Coloque os passos em métodos com a mesma assinatura, de modo que os métodos originais se tornem o mesmo. Você poderá então subi-los na hierarquia.

33 Criar Método Roteiro Motivação
Herança é uma ferramenta poderosa para eliminar comportamento duplicado. Sempre que vemos dois métodos semelhantes em uma subclasse, queremos juntá-los em uma superclasse. Mas e se eles não forem exatamente os mesmos?   Um caso comum é o de dois métodos que parecem ter passos similares na mesma ordem, porém os passos não são os mesmos. Neste caso podemos mover a seqüência para a superclasse e permitir que o polimorfismo execute seu papel

34 Criar Método Roteiro

35

36 Substituir Herança por Delegação

37 Substituir Herança por Delegação
Uma subclasse usa apenas parte da interface de uma superclasse ou não quer herdar dados. Crie um campo para a superclasse, ajuste métodos para delegarem para a superclasse e remova a herança.

38 Substituir Herança por Delegação
Motivação A subclasse usa somente parte da interface da superclasse Problema conceitual: a subclasse não é uma superclasse Necessidade de substituir a herança por outra "mais útil"

39 Substituir Herança por Delegação

40 Substituir Herança por Delegação

41 Substituir Delegação por Herança

42 Substituir Delegação por Herança
Você está usando delegação e está freqüentemente escrevendo muitas delegações simples para toda a interface. Torne a classe que delega uma subclasse da classe delegada.

43 Motivação Motivação Este é o reverso de Substituir Herança por Delegação. Se você se encontrar usando todos os métodos da classe delegada e estiver farto de escrever todos esses métodos de delegação simples, pode voltar para a herança facilmente.

44 Substituir Delegação por Herança

45 Substituir Delegação por Herança


Carregar ppt "Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones."

Apresentações semelhantes


Anúncios Google