refatorações

14

Click here to load reader

Upload: altamir-benkenstein

Post on 19-Jun-2015

66 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Refatorações

RefatoraçõesAltamirRenan

Page 2: Refatorações

Extract 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.

• 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.

Page 3: Refatorações
Page 4: Refatorações
Page 5: Refatorações

Inline Method• A implementação de um método é tão clara

quanto o nome do método. Substitua a chamada ao método pela sua implementação.

• Motivação: ▫Bom para eliminar indireção desnecessária.

Se você tem um grupo de métodos mal organizados, aplique Inline Method em todos eles seguido de uns bons Extract Methods.

Page 6: Refatorações

int bandeiradaDoTaxi (int hora) {return (depoisDas22Horas (hora)) ? 2 : 1);

}

int depoisDas22Horas (int hora) {return hora > 22;

}//REFATORADOint bandeiradaDoTaxi (int hora) {

return (hora > 22) ? 2 : 1);}

Page 7: Refatorações

Extract Superclass• Duas classes apresentam características semelhantes.• Motivação:

▫ Código duplicado é um dos principais Bad Smells em sistemas. Se você código duplicado em vários lugares, então, quando chega a hora de mudar, você tem mais coisas para mudar do que você deveria.

▫ Uma forma de código duplicado é ter duas classes que fazem coisas semelhantes, da mesma forma, ou coisas semelhantes de diferentes maneiras. Objetos fornecem um mecanismo embutido para simplificar esta situação com a herança.

▫ No entanto, muitas vezes você não notara as semelhanças até ter criado algumas classes, em que você precisa criar a estrutura de herança mais tarde.

Page 8: Refatorações
Page 9: Refatorações
Page 10: Refatorações

Extract Subclass

•O principal motivo para o uso é a constatação de que a classe tem um tipo comportamento para algumas instâncias da classe e não para outros. Às vezes, isso é sinalizado por um tipo de código, em que você pode usar Replace Type Code with Subclasses ou Replace Type Code with State/Strategy.

Page 11: Refatorações
Page 12: Refatorações
Page 13: Refatorações

Pull UP Field• A superclasse e a subclasse têm os mesmos

atributos (field). Mova os atributos repetidos para a superclasse.

• Motivação:▫ Subclasses desenvolvidas independentemente umas

das outras, ou após refatoração, podem ter características (features) duplicadas. Atributos podem ser duplicados. Estes não necessariamente têm o mesmo nome em todas as subclasses. A forma de eterminar se tal acontece é verificar como os atributos são usados por outros métodos. Se eles são usados da mesma forma, pode-se generalizá-los.

Page 14: Refatorações