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

Рефакторинг Спуск методу

Проблема

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

Рішення

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

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

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

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

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

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

Переваги

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

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

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

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

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

Замучились читати?

Збігайте за подушкою, в нас тут контенту на 7 годин читання.

Або спробуйте наш новий інтерактивний курсу. Він набагато цікавіший за банальний тест.

Дізнатися більше...