Также известен как Pull Up Field

Рефакторинг Подъём поля

Проблема

Два класса имеют одно и то же поле.

Решение

Переместите поле в суперкласс, убрав его из подклассов.

До
Pull Up Field - Before
После
Pull Up Field - After

Причины рефакторинга

Подклассы развивались независимо друг от друга. Это привело к созданию одинаковых (или очень похожих) полей и методов.

Достоинства

  • Убивает дублирование полей в подклассах.

  • Облегчает дальнейший перенос дублирующих методов из подклассов в суперкласс, если они есть.

Порядок рефакторинга

  1. Проверьте, что оба поля используются для одинаковых нужд в подклассах.

  2. Если поля имеют разные названия, дайте им общее имя и замените все обращения к полям в существующем коде.

  3. Создайте поле с таким же именем в суперклассе. Обратите внимание на то, что если поля были приватные (private), поле в суперклассе должно быть защищённым (protected).

  4. Удалите поля из подклассов.

  5. Возможно, имеет смысл использовать самоинкапсуляцию поля для нового поля, чтобы скрыть его за методами доступа.

Устали читать?

Сбегайте за подушкой, у нас тут контента на 7 часов чтения.

Или попробуйте наш интерактивный курс. Он гораздо более интересный, чем банальный текст.

Узнать больше...