Size: a a a

var chat = new Chat();

2021 September 12

S🤔

Sergey 🤔 in var chat = new Chat();
Вполне реальное, всего-то и надо соблюдать, чтобы потомки работали как предки и не ломали ход выполнения программы
источник

ВО

Влад Ого in var chat = new Chat();
Но сама идея виртуал методов этому протеворечит,когда потомок меняет поведение
источник

E

Etki in var chat = new Chat();
А здесь мы начинаем говорить про open/closed
источник

E

Etki in var chat = new Chat();
Что код должен расширять поведение, но не модифицировать исходное
источник

E

Etki in var chat = new Chat();
Идеи в солиде вообще очень забавно переплетаются друг с другом
источник

S🤔

Sergey 🤔 in var chat = new Chat();
Не, поведение менять можно, главное чтобы у тебя например исключение не вывалилось где не попадя в классе потомка
источник

S🤔

Sergey 🤔 in var chat = new Chat();
А так да, многие конструкции языка противоречат солиду (или наоборот)
источник

S🤔

Sergey 🤔 in var chat = new Chat();
Да и вообще тру ООП это не про шарп
источник

E

Etki in var chat = new Chat();
Лучший пример, который бы соответствовал и который я видел - это ThreadPoolExecutor с переопределяемыми after / beforeSubmit() в джаве. Он эти методы вызывает внутри себя, поэтому потомком ты можешь добавить дополнительные вещи в лайфсайкле, но не можешь при этом влиять на собственно работу экзекьютора
источник

E

Etki in var chat = new Chat();
Солид не имеет жесткой привязки к ооп
источник

S🤔

Sergey 🤔 in var chat = new Chat();
источник

E

Etki in var chat = new Chat();
Даже принцип лисков говорит нам про подтипы, а не конкретно про наследование (:
источник

Ɖ

Ɖrēw in var chat = new Chat();
Зато ООП бояре любят его гвоздями прибивать
источник

Ɖ

Ɖrēw in var chat = new Chat();
К ООП
источник

E

Etki in var chat = new Chat();
Хотя википедия говорит мне сейчас, что подтипы это строго термин ООП (((
источник

D

Dmitry in var chat = new Chat();
дяк ))
источник

Ɖ

Ɖrēw in var chat = new Chat();
Вот бы SRTP в сишарпе
источник

Ɖ

Ɖrēw in var chat = new Chat();
Типичный пример - хочу чтобы метод что то делал с объектом у которого есть свойство Id, но не хочу создавать связность таких классов/структур с общей абстракцией где есть Id
источник

Ɖ

Ɖrēw in var chat = new Chat();
В фушарпе могу спокойно написать такую функцию
источник

E

Etki in var chat = new Chat();
Структурное наследование придумали?
источник