Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git на GitByBit.com! Привіт! Хочеш класно освіжити Git? Глянь мій новий курс на GitByBit.com!

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

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

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

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

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

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

Лікування

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

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

Виграш

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