172 похожих чатов

Для меня наследование это просто удобство ради удобства. Без множественного наследования,

это бесполезная вещь, но удобная. С множественным наследованием, это опасная, но мощная вещь.
Наследование можно реализовать по разному, но сути дела не меняет.
Композиция и интерфейсы более грамотная реализация ООП, на мой вкус.
А само ООП с наследованием, это ниша. GUI и подобных вещей, где мы реально можем комбинировать элементы. Для большинства задач, это не нужно и невозможно отразить реальность.
Потому что все программирование будет вертеться вокруг данных. Конечно всегда можно сказать что все объект, но на деле. На деле объектное мышление, красивые слова, не более. Разберем JSON. Где O это Object.
У нас есть ограниченное число данных и комбинируя их мы можем получить структуры, разные массивы структур и карты. То что назвали там объектом что то, просто для красивого словца.
Как и большинство вещей в ООП основанном на наследовании. Мы можем назвать данные хоть объектом, хоть компонентом, хоть чем угодно. Вопрос как мы с ними работаем? И тут у нас вопрос, а как мы с ними работаем? Java / D / C++ / C# у всех разное "ООП и наследование".
На практике кроме как сделать удобное масштабирование, создание формочек, я для ООП с наследованием не придумал. Ну то есть функционал кнопки базовой и поехали ... И то это не единственное решение.
А если вам доступен DSL, так и вообще не нужное.
Возьмем DART / JS или Python. Тут это понять еще можно, динамика, гуишка и прочие вещи, где да. ООП смотрится как хороший такой Костыль, необходимый. Есть конечно вариант ООП в духе Lua.
Но для обыденного человека, этот путь явно сложнее.
Только вопрос, а какой ценой? Ценой всего! Код становится легаси быстрее чем проект доходит до релиза.
Баги плодятся, сущности плодятся, контроль теряется. Это прямо стандарт. С множественным наследованием, это порой вообще сказка и магия, которую тяжело понять.
Я не против ООП и мне нравится 1 сторона ООП это встраивание, особенно в духе Го.
С другой стороны ООП с наследованием это очень простой путь, но ведет он чаще в помойку.
Но тут есть 1 плюс, это помойку можно неплохо рефакторить. При определенных обстоятельствах и в опредленных условиях. Удобно конечно взять Object и запихнуть что надо, наследовать что надо и поехали.
С другой стороны есть Any почти везде и без наследования.
Я могу придумать пару кейсов где наследование круто, но в большинстве своем не нужно.
Про реализацию я не просто так поднял вопрос выше, от этого зависит ВСЕ!
Перф, память, возможности, поведение. Банально то как вы будете подсчитывать матрицу в таблице ссылок.
С математической точки зрения пофигу как, а с точки зрения программы ой как не пофиг.
Тут начинается первые муки выбора... и так они идут до нашего с вами кода.

1 ответов

37 просмотров

ну, теоретически-практически, я с вами согласен. ООП разное и в общем-то нашпиговано проблемами, решений который никто не знает. Я лично считаю, что для простых программ оно себя не оправдывает, как и там где есть крайне специфические требования в виде низкого уровня, перфа и т.п., нужны другие парадигмы, либо их смесь. Каждой задаче - свой инструмент. Наследование можно, конечно, развязать через композицию\агрегацию\ассоциацию. Допустим, не знаю там, рандомная игра имеет сущности человек и мы композицей добавляем ему хвост. Это будет работать ровно до того момента, когда не появятся, например, болезни хвоста, а хвост не наследуется от органа человека, который не наследуется от тканей, которые не наследуются от клеток человека и таким образом хвост не содержит клеток человека и ему нельзя добавить все их свойства и особенности человеческого воспаления\патпроцесса. Он будет требовать хаков, поскольку не является частью организма чела по смыслу модели, хотя раньше оно работало норм. Выходит такой же вид отложенных архитектурных проблем, как и навертывание иерархии от правки базовых классов. + траблы с проверками типов и т.п. что опирается на механизм интерфейсов\наследования\полиморфизма. Я, например, много раз наблюдал проблему от одиночного. Иерархию блокирует либа\фреймворк и тут в любом случае нужно юзать композицию, втюхивая объект в поле. Потом часть апи принимает совсем другой интерфейс, а другая часть апи требует массового доступа к методам вложенного, что требует меты\рефлексии\чтотовыдумывать как ему это все прокинуть. Эта превращается в большую проблему. Т.е. одиночное наследование может демонстрировать проблемы композиции в некоторых случаях. Но опять-таки, да, в каждом ЯП своя специфика.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
3
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Карта сайта