21

Re: Чи є тут Senior Developers та хто може зробити ревю?

iovchynnikov працюючи на довгостроковому проекті я зрозумів що робити композицію легше і безпечніше ніж наслідувати обєкти.
Робити мікс функціоналу з композицією можна без проблем. А що робити з наслідуванням?
Наприклад у анс буде LoggablePuzzle extends Puzzle який містить функціонал - відправляй у лог всі букви які відкриваються.
І тут у вас появляється задача. Якщо стається exception у методі open ви маєте також відправити його у лог, але уже у інший. І викинути exception нагору, кого тоді наслідувати і як ;)

22

Re: Чи є тут Senior Developers та хто може зробити ревю?

funivan написав:

І тут у вас появляється задача. Якщо стається exception у методі open ви маєте також відправити його у лог, але уже у інший. І викинути exception нагору, кого тоді наслідувати і як ;)

Що те що інше вимагає дописувати код. Приклад трохи недолугий. В такому випадку я б розширив (функціонально, не новим extends) той самий LoggablePuzzle і все.

Ідея софт.інженерії в тому, щоб в конкретних випадках використовувати найбільш відповідні рішення. Я не казав, що успадкування це silver bullet/golden hummer: є випадки коли треба використати композицію, деінде успадкування. Казати, що композицію робити легше і безпечніше це так само як казати "їсти ложкою локшину краще, бо це безпечніше" :) Як на мене пазл в пазлі ані з технічної точки зору, ані з пункту бачення домену не є валідним (логічно) кейсом. But up to u :)

Подякували: funivan, 0xDADA11C7, leofun013