Autumn SALE

Подъём поля

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

Проблема

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

Решение

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

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

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

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

Достоинства

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

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

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

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

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

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

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

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