Глянь мой новый курс по Git! Привет! Глянь мой новый курс по Git! Привет! Глянь мой новый курс по Git на GitByBit.com! Привет! Хочешь круто подтянуть Git? Глянь мой новый курс на GitByBit.com!

Подъём поля

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

Проблема

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

Решение

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

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

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

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

Достоинства

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

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

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

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

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

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

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

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