Весняний РОЗПРОДАЖ

Спуск методу

Також відомий як: Push Down Method

Проблема

Поведінка, реалізована в суперкласі, використовується тільки одним або декількома підкласами.

Рішення

Перемістіть цю поведінку в підкласи.

До
Push Down Method - Before
Після
Push Down Method - After

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

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

Крім того, така ситуація може виникнути після відокремлення (чи видалення) частини функціональності з ієрархії класів, після якого метод залишився використовуваним тільки в одному підкласі.

Якщо ви бачите, що метод потрібний більш ніж одному підкласу (але не всім), можливо, варто створити проміжний підклас і перемістити метод в нього. Це дозволить уникнути дублювання коду, яке виникло б при спуску методу в усі підкласи.

Переваги

  • Покращує зв’язність усередині класів. Метод знаходиться там, де ви очікуєте його побачити.

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

  1. Оголосіть метод в підкласі і скопіюйте його код з суперкласу.

  2. Видаліть метод з суперкласу.

  3. Знайдіть усі місця, де використовується метод, і переконаєтеся, що він викликається з потрібного підкласу.