x
Local exceptions for control flow are OK: If the control flow is complicated and private, it’s OK to use exceptions for control flow.
x
и это рэйлвей маста??
Vladislav
Это нормальная практика
Vladislav
Потому что
x
много что нормальная практика. Но ведь это ВЛАШИН
Vladislav
Проще использовать ioexception напрямую чем функциональщину
Vladislav
x
x
про IO у него отдельный пунктик
Vladislav
Так а почему нет
x
ну, потому что он именно про локал эксепшенс для контрол флоу 🤷♂️
Ilya
Уже второй раз возмущаются эксепшенам локальным. В чём проблема-то?
x
для контрол флоу
x
это значит типа goto
Ilya
Да. Был бы goto в F#, он ьы посоветовал его)
x
а это в свою очередь значит что мы забиваем на структурное программирование
Ilya
Использование goto внутри метода означает, что забили на структурное программирование? Не слишком громко?
x
нет, не слишком
Ilya
Ок. Тогда забили.
x
есть циклы, есть ветвления. А гоуту не нужен!
x
ну хотя нет, я один раз использовал в жизни
x
чтобы вырваться из глубокой вложенности
x
но это лишь означало что я очень херово запроектировал метод
Doge
Doge
Другой вопрос насколько.
Shub
Ilya
Shub
Недавно была статья, что наоборот вроде
Shub
Или это было про окамл?
Doge
Ну какое-то количество тактов потратится
Но, конечно, использовать экспешены, чтобы выбраться из глубокой вложенности в методе - это повод задуматься.
Хотя, конечно, могут быть ситуации (куча ресурсов, которые надо освобождать), где это может быть полезно.
Doge
Но это редкие случаи
Ilya
Shub
Ilya
Надо бы побенчить, но лень матушка. А ещё там много переменных же. Например, глубина.
Vladislav
Вообще было интересно подрубиться к студии в режиме дебага. Там исключения просто тонной летят внутри
Vladislav
Целым составом
Vladislav
Ilya
И node js ещё!
Shub
Nikolay
Исключения очень дорогие в дебаге, в релизе вроде достаточно быстрые, но конечно если в цикле летят тысячами, это не очень, и скорее где-то в коде проблема
Nikolay
Даже само слово исключение как бы намекает, что это не что-то регулярное
Ilya
А вот в плюсах zero-cost value exceptions делают!
Denis
Когда говорят что нужно использовать исключения
Ilya
Я их возвращаю иногда😆
Vladislav
https://github.com/dotnet/coreclr/issues/22224#issuecomment-499657814
Vladislav
https://github.com/dotnet/coreclr/issues/25167
Ilya
Пофиксят рано или поздно, думаю. Вон, там Котаз уже шильдики вешал какие-то.
Ilya
А пока можно пересесть на котлин!
x
нет, давайте строить на них контрол флоу! <горячится, брызгает слюной>
Romɑn
Диёр
Диёр
Работал я как-то с челиком, который рассказывал как у него на прошлом месте все увлекались разработкой, где весь флоу был на эксепшенах и их ловле
Диёр
Вот это весело было, наверное
Ilya
Диёр
Ага, вот тупые
Диёр
Или бросать исключение, ловить, возвращать и матчить
Ilya
*возбуждается и идёт писать фреймворк*
Диёр
Диёр
Я буду бросать, а ты ловить и возвращать, потом я матчить
Nikolay
А вы видели DU в котлине?
Диёр
А их там не было когда я в последний раз смотрел
Nikolay
open class OrderMessage private () { // private constructor to prevent creating more subclasses outside class New(val id: Int, val quantity: Int) : OrderMessage() class Cancel(val id: Int) : OrderMessage() }
Nikolay
Так, криво скопировал
Диёр
Ну так ты же их матчить потом нормально не сможешь
Диёр
Будут у тебя смарткасты в свичах
Диёр
Я в пхп тоже так могу
Диёр
И даже в го
Nikolay
Nikolay
Nikolay
Диёр
Ну ты матчишь классы, но без значений с их пропертями
Диёр
Так что это свитч со смарткастом
Nikolay
Ну короче они очень такие себе