refatorações

Post on 19-Jun-2015

66 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

RefatoraçõesAltamirRenan

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.

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.

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);}

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.

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.

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.

top related