Також відомий як Refused Bequest

Запах коду Відмова від спадку

Симптоми і ознаки

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

Причини появи

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

Лікування

  • Якщо наслідування не має сенсу, і підклас насправді не є представником суперкласу, слід позбавитися від відношення наслідування між цими класами, застосувавши заміну наслідування делегуванням.
  • Якщо наслідування має сенс, треба позбавитися від зайвих полів і методів в підкласі. Для цього необхідно витягнути з батьківського класу всі поля і методи, які потрібні підкласу, в новий суперклас, і зробити обидва класи його спадкоємцями («відокремлення суперкласу» (Extract superclass)).

Виграш

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

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

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

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

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