Re[71]: MS забило на дотнет. Питону - да, сишарпу - нет?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 13.09.21 09:48
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

I>>Вот бы узнать Я встречал такой код. Итого — как тут интерфейсы помогли?


НС>Очевидно — никак. А должны были?


Именно. И с наследованием ровно так же.

I>>Это нарушение всех принципиов вместе взятых

НС>Нет.

Тут стоит посмотреть Skott Meyers, Herb Sutter, Bertrand Meyer, начало 90х. Чем больше методов — тем сильнее нарушается инкупсуляция.
30 лет как ООП совсем другое, пора бы познакомиться с новшествами

I>>С глубокой иерархией интерфейсов все ровно так же.

НС>Нет.

И никакого обоснования, как будто это и так ясно. Аргументы будут?

I>>Например, если в иерархии, построеной на иммутабельный принципах

НС>Иммутабельность никогда не была тем, что ОО контракты гарантируют.

Возьми любое другое свойство, например тот самый метод add. Нагородил некто глубокую иерархию, а потом взял да и сломал базовый интерфейс.

I>>А вот смысл конкретной абстрации вполне себе может быть в иммутабельности.

НС>При чем тут наследование и интерфейсы?

Тебе интерфейсы для чего нужны? Что именно ты решаешь этими интерфейсами? Приведи пример.

I>>Именно — не может. А раз не язык даёт гарантии, то кто их предоставит?

НС>Ну да, вернулись к "раз мы всех воров поймать не можем, то нефик их вообще ловить".

Всё проще фича extends это плохое решение, которое плохо решает три задачи — subtype, переиспользование и композицию. А нужны раздельные языковые конструкции для каждого аспекта.

НС>>>Ты пытаешься лишить меня выбора, зачем то навязывая мне потребности в гарантиях иммутабельности.

I>>Это просто пример.

НС>Нет, это не просто пример. Если выкинуть ммутабельность — в твоих аргументах и построениях вообще ничего не останется.


С методом add всё 1 в 1. Любое свойство ведет себя ровно так же, и иммутабельность ничем не лучше и не хуже других примеров.
Проблема в том, что нет внятного языкового способа выразить эти самые гарантии. Чтото есть в эйфеле, но он не летает в мейнстриме.

I>>Можем взять еще проще — как ты обеспечишь гарантии, что add добавляет в конец списка свой параметр и вытекающие свойства — длина увеличивается на единицу и тд.

НС>На уровне ОО контрактов? Очевидно никак.

Вот чудо — и тут интерфейсы облажались Почему же ты ждешь чего то большего от наследования?

НС>Нет, никакого решения проблоемы ты не показывал. Исключительно пытался показать, что ОО контракты не контролируют иммутабельность, хотя с этим никто и не спорил.


Я привел два примера. Например, очистка в add. Но ты еще видишь только второй пример, с иммутабельностью.

>Возражение тут вызывает то, что ты назначил отсутствие контроля иммутабельности главным недостатком наследования.


Ты игнорируешь аргумент про очистку add, делаешь вид, что речь была только про иммутебельность. То есть, то самое имаго
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.