Descer Campo.
Um campo é usado apenas em algumas subclasses?
Mova o campo para essas subclasses.
##Example
##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
-
Declare um campo em todas as subclasses necessárias.
-
Remova o campo da superclasse.