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

Коллеги, подскажите, а downcast в Rust это всё ещё плохая

идея?
Я его избегаю ещё со времён С++, но там были весомые причины - во первых, это ломало всю красоту ООП дизайна, так как вынимало информацию о нижележащих типах в тех местах, где эта информация должна быть скрыта. Во вторых, это было медленно и работало только когда у объекта был vtable.
И вот я вчера джуниору одному в код ревью написал "let's get rid of downcast here", он спрашивает "why?". И тут я задумался.

5 ответов

19 просмотров

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

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

Αλεχ Zhukovsky
джуну нужно обьяснить что любая паника это минус. ...

Вы предлагаете "проглатывать" ошибки? Достался мне как-то такой проект... Переделывал.

Alex P
Вы предлагаете "проглатывать" ошибки? Достался мне...

я предлагаю делать невалидные состояния непредставимыми в системе типов

можно почитать введение в http://lucacardelli.name/Papers/TypeSystems.pdf, в частности про trapped и untrapped errors и про static safety. существует иерархия ошибок, которая отображает выбор дизайна API: 1) static checks 2) trapped errors 3) untrapped errors делаем 1, если не получается или получается неудобно, делаем 2, если не получается или получается неудобно, делаем 3

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта