2.4 KiB
2.4 KiB
#рефакторинг #методы_рефакторинга
Проблема
Поле используется только в некоторых подклассах
class Employee { // Java
private String quota;
}
class Engineer extends Employee {...}
class Salesman extends Employee {...}
Решение
Переместите поле в эти подклассы
class Employee {...}
class Engineer extends Employee {...}
class Salesman extends Employee {
protected String quota;
}
Причины рефакторинга
Поле, которое планировали сделать универсальным для всех классов, по факту используется только в некоторых подклассах. Такая ситуация может возникнуть, когда планируемые фичи так и не были реализованы.
Кроме того, такая ситуация может возникнуть после извлечения (или удаления) части функциональности из иерархии классов.
Достоинства
- Улучшает связность внутри классов. Поле находится там, где оно реально используется
- При перемещении в несколько подклассов одновременно, появляется возможность развивать поля независимо друг от друга. Правда, такое действие создаёт дублирование кода, поэтому стоит спускать поля, только если вы действительно намерены использовать их по-разному
Порядок рефакторинга
- Объявите поле во всех необходимых подклассах
- Удалите поле из суперкласса
