Кстати, я заметил что кейворды abstract, virtual, override - зарезервированы,

значит есть надежда?🌚

29 ответов

19 просмотров

по-моему это ненужный сахар, пусть там в резерве и лежат, не надо из раста монстра делать, как с++

David-Eritsyan Автор вопроса
Developer
по-моему это ненужный сахар, пусть там в резерве и...

Это печально. Не обязательно ведь монстра нужно делать, какое-нибудь одиночное наследование и все🌚🌚

David Eritsyan
Это печально. Не обязательно ведь монстра нужно де...

https://t.me/rust_beginners_ru/179563 вот здесь у человека были проблемы с наследованием, участники группы предложили выход из ситуации. в принципе все ооп-шные проблемы можно решить в расте штатными средствами. имхо излишний инструментарий не нужен в компилируемых языках - любая фича так или иначе сказывается головной болью для разработчиков компилятора. зачем это нужно?

David Eritsyan
Это печально. Не обязательно ведь монстра нужно де...

плюсовое наследование, которое смешивает делегацию и динамический полиморфизм, можно не ждать,но вот про статическую делегацию разговоры давно идут и возможно таки что-то в итоге из них родится https://github.com/rust-lang/rfcs/issues/349 но так-то да, неплохих альтернатив для большинства ситуаций язык уже предоставляет

Как с goto в Java, ага

David Eritsyan
Это печально. Не обязательно ведь монстра нужно де...

да хотя бы сделайте наследование реализации методов в трейте

мелькал в нескольких rfc и обсуждениях, из которых ничего пока не вышло. если надо тупо имя типа получить, то в стд есть https://doc.rust-lang.org/std/any/fn.type_name.html

ozkriff🇺🇦 Lesnikóv
мелькал в нескольких rfc и обсуждениях, из которых...

ну вообще, да, скорее всего вне темплейтов он не нужен, а темплейтов в расте нет

David Eritsyan
2014 год... Ну-с, вряд ли))

не факт, ага. но, с другой стороны, запросы HKT тоже с 13 года висят и с GAT'ами движуха таки разогналась в последние годы

David Eritsyan
Это печально. Не обязательно ведь монстра нужно де...

Нет смысла добавлять в раст наследование- все решается композицией

Алексей
Нет смысла добавлять в раст наследование- все реша...

У наследования и композиции свои удобные юзкейсы

Карим Аль-Савади
У наследования и композиции свои удобные юзкейсы

Наследование – это крайнее средство. Как правило всегда есть способ сделать лучше. Но иногда надо. Но ради этого в язык добавлять не стоит

Карим Аль-Савади
И почему это крайнее средство?

Потому что практика показывает, что оно плохо выражает идеи. Потому что другие средства позволяют сделать архитектуру лучше и код короче. Потому что вообще объекты – это замыкания для бедных (тут конечно в Раст много специфики, но всё равно это стоит помнить)

А можно пример из практики? Мне всегда казалось, что есть два понятных юзкейса - немного свойств у многих и много свойств у немногих. Наследование удобнее в первом случае, композиция во втором.

Карим Аль-Савади
А можно пример из практики? Мне всегда казалось, ч...

Всё-таки важно что это за "свойства", как они взаимодействуют между собой. Суть не в том, чтобы заменять наследование композицией. Суть в том, чтобы вообще иначе строить архитектуру. Ну возьмите например паттерн ECS. Да, он не подходит всегда и для всего, но это отличный пример что есть другие варианты, кроме наследования и завуалированно наследования, выраженного композицией

Anton А 🦄
Всё-таки важно что это за "свойства", как они взаи...

Ну так а зачем иначе строить архитектуру. Вот есть у меня допустим потребность в написании тестов. И для этого мне нужно в каждый отдельный тест прокидывать некоторый контекст. Почему бы не сделать это с помощью наследования, а выбирать какую-то другую архитектуру? Мне хочется узнать на примере, как это работает, абстрактно это ни о чем не говорит, кроме «делай хорошо и хорошо будет».

Карим Аль-Савади
Ну так а зачем иначе строить архитектуру. Вот есть...

Это вопрос из серии "зачем делать отступы в коде". У программистов, постигших классическое ООП (то есть у примерно всех), есть когнитивное искажение: бездумное следование определенной схеме. Чтобы его преодолеть, чтобы не застрять на уровне развития "умею пользоваться ООП", а дойти до уровня "умею не пользоваться ООП", нужно постараться. Вот например наблюдение из практики. При наследовании зачастую код специфического назначения оказывается в базовом классе, хотя он там как собаке пятая нога. Грубо говоря, если вам надо добавить животному поведение при встрече с человеком, нужно запихнуть в базовый класс абстрактный метод. Чувствуете запахло недекомпозированностью и сложностью "m x n" вместо "m + n"?

Anton А 🦄
Это вопрос из серии "зачем делать отступы в коде"....

Первый абзац комментировать не буду, скажу только, что уверенность в своей правоте это худший способ доказать что-то. Особенно, когда кроме него ничего нет. Так вы не останавливайтесь в этом примере на моменте со сложностью. Вы расскажите, как эта сложность решается. Заодно можете рассказать, почему "Грубо говоря, если вам надо добавить животному поведение при встрече с человеком, нужно запихнуть в базовый класс абстрактный метод." это решение в духе наследования, а не просто плохое.

Сложность решается с помощью алгебраических типов данных. Если в данном случае нет противопоказаний к использованию ADT. А если есть, то решается иначе. Индивидуально в каждом случае. Я упоминал ECS. Или надо аккуратно воткнуть в нужное место Any. Суть в том, что решение индивидуально

Anton А 🦄
Сложность решается с помощью алгебраических типов ...

То есть, мы пришли обратно к тому, что все индивидуально и нет обоснования для фразы "Практика показывает, что оно плохо выражает идеи". Потому что на практике просто оказывается, что инструмент был применен неправильно или его не нужно было применять в конкретном случае. И я напомню, что изначальное я об этом и сказал - у каждого инструмента(будь то наследование или композиция) свои юзкейсы.

Карим Аль-Савади
То есть, мы пришли обратно к тому, что все индивид...

А я говорю, что практика показывает (моя практика если хотите), что почти всегда есть решение не использующее наследование, и оно лучше в смысле более точного соответствия кода мыслям в голове программиста. Но чтобы его найти, его нужно искать, потому наследование руки пишут сами без участия головы.

Вполне может быть. Мне тоже зачастую не нравится наследование и как некоторые создают с его помощью запутанную абракадабру из классов, но иногда его отсутствие порождает горы бойлерплейта, а это много хуже.

Карим Аль-Савади
Вполне может быть. Мне тоже зачастую не нравится н...

Возможно. Но я прежде хотел бы увидеть в Rust impl Trait through Field и посмотреть на количество оставшегося бойлерплейта

Карим Аль-Савади
Вполне может быть. Мне тоже зачастую не нравится н...

Наследование в системном языке нетривиально в реализации

Карим Аль-Савади
Вполне может быть. Мне тоже зачастую не нравится н...

Чаще видно, что гору бойлерплейта порождает оверинжиниринг, который в частности ооп создавать просто обожает, а от процедурки отвык народ, поэтому так и выходит

Traveller Kolsky
Чаще видно, что гору бойлерплейта порождает оверин...

Да просто у ООП реклама лучше, так еще и рекламируют, как универсальное решение, к сожалению.

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

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

Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Как с помощью opencv найти ракету на картинке?))
ᅠ [ Кому не ответил, дублируйте ]
2
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
Карта сайта