ConstructiCat Logo
CodeBust.
Browse section ▾

Descer Campo.

Problem

Um campo é usado apenas em algumas subclasses?

Solution

Mova o campo para essas subclasses.

##Example

Antes
Unit fuel Soldier Tank
Depois
Unit Soldier Tank fuel

##Why Refactor

Embora tivesse sido planejado usar um campo universalmente para todas as classes, na realidade o campo é usado apenas em algumas subclasses. Essa situação pode ocorrer quando funcionalidades planejadas não se concretizam, por exemplo.

Isso também pode ocorrer devido à extração (ou remoção) de parte da funcionalidade de hierarquias de classes.

##Benefits

  • Melhora a coesão interna da classe. Um campo fica localizado onde é de fato usado.

  • Ao mover para várias subclasses simultaneamente, você pode desenvolver os campos de forma independente uns dos outros. Isso de fato cria duplicação de código, sim, então desça campos apenas quando você realmente pretende usar os campos de maneiras diferentes.

##How to Refactor

  1. Declare um campo em todas as subclasses necessárias.

  2. Remova o campo da superclasse.