Autumn SALE

Підйом методу

Також відомий як: Pull Up Method

Проблема

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

Рішення

В цьому випадку треба зробити методи ідентичними, а потім перемістити їх в суперклас.

До
Pull Up Method - Before
Після
Pull Up Method - After

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

Підкласи розвивалися незалежно один від одного. Це привело до створення однакових (чи дуже схожих) полів і методів.

Переваги

  • Прибирає дублювання коду. Якщо вам треба внести зміни в метод, краще зробити це в одному місці, ніж шукати усі дублікати цього методу в підкласах.

  • Також цей рефакторинг можна використати, якщо підклас навіщось перевизначає метод суперкласу, але, по суті, робить ту ж роботу.

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

  1. Обстежте схожі методи в суперкласах. Якщо вони не однакові, приведіть їх до одного і того ж виду.

  2. Якщо методи використовують різний набір параметрів, приведіть ці параметри до того виду, який ви хочете бачити в суперкласі.

  3. Скопіюйте метод в суперклас. Тут ви можете зіткнутися з тим, що код методу використовує поля і методи, які є тільки в підкласах, а тому недоступні в суперкласі. Щоб розв’язати цю проблему, вам треба:

  4. Видаліть методи в підкласах.

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