Подъём поля
Проблема
Два класса имеют одно и то же поле.
Решение
Переместите поле в суперкласс, убрав его из подклассов.
Причины рефакторинга
Подклассы развивались независимо друг от друга. Это привело к созданию одинаковых (или очень похожих) полей и методов.
Достоинства
-
Убивает дублирование полей в подклассах.
-
Облегчает дальнейший перенос дублирующих методов из подклассов в суперкласс, если они есть.
Порядок рефакторинга
-
Проверьте, что оба поля используются для одинаковых нужд в подклассах.
-
Если поля имеют разные названия, дайте им общее имя и замените все обращения к полям в существующем коде.
-
Создайте поле с таким же именем в суперклассе. Обратите внимание на то, что если поля были приватные (private), поле в суперклассе должно быть защищённым (protected).
-
Удалите поля из подклассов.
-
Возможно, имеет смысл использовать самоинкапсуляцию поля для нового поля, чтобы скрыть его за методами доступа.