Також відомий як Extract Superclass

Рефакторинг Відокремлення суперкласу

Проблема

У вас є два класи із схожими полями і методами.

Рішення

Створіть для них спільний суперклас і перенесіть туди схожі поля і методи.
До
Extract Superclass - Before
Після
Extract Superclass - After

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

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

Переваги

  • Прибирає дублювання коду. Схожі поля і методи тепер «живуть» тільки в одному місці.

Коли не слід застосовувати

  • Ви не можете застосувати цей рефакторинг до класів, які вже мають суперклас.

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

  1. Створіть абстрактний суперклас.

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

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

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

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

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

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

Живий приклад

Перший раз у нас? Нічого страшного!

У нас тут все просто – цей інтерактивний приклад дуже схожий на відео (хоча й виглядає набагато крутіше).

  1. Натискаєте велику кнопку "Почати", а далі слідуєте усім підказкам.
  2. Ви можете перемотувати програвання, використовуючи стрілки зліва.
  3. Окрім того, ви можете подивитися різницю між стартовим та отриманим кодом, натиснувши кнопку ока ().
  4. Кнопка компіляції та тестування () дає змогу перевірити код на наявність помилок.