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

Подъём метода

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

Проблема

Подклассы имеют методы, которые делают схожую работу.

Решение

В этом случае нужно сделать методы идентичными, а затем переместить их в суперкласс.

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

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

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

Достоинства

  • Убирает дублирование кода. Если вам нужно внести изменения в метод, лучше сделать это в одном месте, чем искать все дубликаты этого метода в подклассах.

  • Также этот рефакторинг можно использовать и в случае, если подкласс зачем-то переопределяет метод суперкласса, но, по сути, делает ту же работу.

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

  1. Обследовать похожие методы в суперклассах. Если они не одинаковы, привести их к одному и тому же виду.

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

  3. Скопируйте метод в суперкласс. Здесь вы можете столкнуться с тем, что код метода использует поля и методы, которые есть только в подклассах, а посему недоступны в суперклассе. Чтобы решить эту проблему, вам нужно:

  4. Удалите методы в подклассах.

  5. Проверьте места, в которых вызывается метод. Возможно, в некоторых из них использование подкласса можно заменить суперклассом.