Size: a a a

Saint P Ruby Community

2020 January 28

IM

Igor Morozov in Saint P Ruby Community
Alex
С бизнеслогикой и исключениями, на мой взгляд, самый большой гемор это отладка. Когда мы можем в любом месте кода сказать: "ну я пошел" и оставив программу, в непонятном состоянии телепортироваться в обработчик, который находится на другой стороне вселенной, расследовать проблемы становится очень больно.
в принципе, можно дисциплиной это заткнуть, но звучит как хорошая такая проблема. всех же не дисциплинируешь
источник

NB

Nikita Bulai in Saint P Ruby Community
Alex
С бизнеслогикой и исключениями, на мой взгляд, самый большой гемор это отладка. Когда мы можем в любом месте кода сказать: "ну я пошел" и оставив программу, в непонятном состоянии телепортироваться в обработчик, который находится на другой стороне вселенной, расследовать проблемы становится очень больно.
немного спасает от такой фигни передача дополнительных данных в эксепшн, а не просто безликий message. Чтобы как минимум выдрать необходимые данные (а-ля DuplicationError должен что-то нести и об объекте, который собсно уже существует)
источник

A

Alex in Saint P Ruby Community
Igor Morozov
в принципе, можно дисциплиной это заткнуть, но звучит как хорошая такая проблема. всех же не дисциплинируешь
Именно так, большая сила требует большой ответственности:)
источник

IM

Igor Morozov in Saint P Ruby Community
так-то через эффекты можно заменить механизм исключений и лишить себя части проблем с отладкой, но сохранить кучу плюх

и обрести ещё много новых. и плюх и проблем

но я об этом как-нибудь потом расскажу
источник

NS

Nikita Shilnikov in Saint P Ruby Community
Mikhail Sytchev
я понимаю, что есть другой устоявшийся инструментарий в виде тех же операций, но вот раньше в серьезных толстых книжках именно так учили делать
это свидетельство того, что дело не в толщине
источник

AG

Alex G in Saint P Ruby Community
Да просто с исключениями проще. Что-то пошло не так - вышел и все. Наверху разберутся. Поэтому и пишут.
Недавно спрашивал товарища, как он пишет.

Сказал, что в эликсире у него {:ok, ..}, {:error, ...}, а в рубишных проектах кастомные исключения.
А все почему? Потому что там удобнее так, а тут эдак.
источник

MS

Mikhail Sytchev in Saint P Ruby Community
ну да, когда я говорил про толстые книги, то конечно же они все джавистами написаны для энтерпрайз мира
источник

MS

Mikhail Sytchev in Saint P Ruby Community
в Rust настолько хороошая система исключений, что не пользоваться ей — грех
источник

MS

Mikhail Sytchev in Saint P Ruby Community
мне кажется в руби идеологически не верно чрезмерно эксепшнами пользоваться, потому-что дизайн языка этому не способствует
источник

IL

Ivan Lopatin in Saint P Ruby Community
Mikhail Sytchev
мне кажется в руби идеологически не верно чрезмерно эксепшнами пользоваться, потому-что дизайн языка этому не способствует
Какие альтернативы предлагаешь?
источник

K

Kirill in Saint P Ruby Community
я понял, спасибо ребята, пойду делать какой то вариант
источник

MS

Mikhail Sytchev in Saint P Ruby Community
Ivan Lopatin
Какие альтернативы предлагаешь?
писать как в сообществе заведено, чтобы следовать принципу наименьшей неожиданности
источник

MS

Mikhail Sytchev in Saint P Ruby Community
на Rust советую всем посмотреть кстати, очень круто спроектирован язык
источник

AD

Anton Davydov in Saint P Ruby Community
Nikita Bulai
минуточку, так и не понял почему результирующий объект не обладает той же проблемой. Можно тут поподробнее?
да, если взять те же монады, ты можешь указать явно что ловить, иногда даже ничего ловить не стоит. в целом банального when Failure хватает для обработки всех ошибок бизнес функции. как не пропустить эту строчку: ПР ревью + генераторы для экшенов
источник

NS

Nikita Shilnikov in Saint P Ruby Community
in Failure(error)
источник

AD

Anton Davydov in Saint P Ruby Community
Nikita Shilnikov
in Failure(error)
ну или так, если паттер матчинг уже работает
источник

NS

Nikita Shilnikov in Saint P Ruby Community
2020
источник

AD

Anton Davydov in Saint P Ruby Community
пора бы уже, да
источник

IL

Ivan Lopatin in Saint P Ruby Community
Я без иронии, мне интересно кто как ошибки обрабатывает, на одном из проектов завезли функциональную обработку chain_it идея вроде ок, но когда начинаешь работать приходится бойлерплейт писать ради идиоматичность.
источник

AD

Anton Davydov in Saint P Ruby Community
Ivan Lopatin
Я без иронии, мне интересно кто как ошибки обрабатывает, на одном из проектов завезли функциональную обработку chain_it идея вроде ок, но когда начинаешь работать приходится бойлерплейт писать ради идиоматичность.
источник