Фил Ранжин
формат другой
Shub
в джаве же отказались от обязательных исключений
От checked. И не то, чтобы отказались, они там есть. Проблема с ними в том, что они tainting
Romɑn
в джаве же отказались от обязательных исключений
Идея-то здрався была, реализация говно
Фил Ранжин
а, хм
Roman
Ну лови базовый тип и будет точно так же. Роман аргументирует, что в эфшарпе лучше, потому что строже - ну так это очевидно, эфшарп в целом получше язык
на всякий случай уточню. Возможна такая ситуация: class LowFicoScoreException : OpenAccountException {} И потом catch (OpenAccountException ex) { Log.Error("Failed to open account"). И наверху уже не узнают, что причина именно в низком файко скоре
Shub
Если ты решил поменять сигнатуру на низком уровне, скажем, поменять тип исключения - тебе придется рефакторить всю цепочку, где они пробрасываются наверх. Это тупая и бесполезная работа. Ну и есть мнение, что это форсит мерзких людишек протекать деталями реализации
Shub
https://defmacro.substack.com/p/parallel-tracks
Почитайте статью все же. Хорошая
Romɑn
https://defmacro.substack.com/p/parallel-tracks
О, спасибо, интересно
Shub
Слава Ахмечет известный лиспер был в свое время
Nikolay
Кстати, вопрос. Чё сразу страктом не сделали хз
А это не всегда лучше и быстрее. Стракты же тоже в кучу могут попадать. А в случае с Option.None это конвертируется в null
Nikolay
Вчера в сурсах замарина такой бажок обнаружил
Ayrat
https://defmacro.substack.com/p/parallel-tracks
И действительно очень годно. Прям или мысли прочитал и развил. Крайне рекомендую к прочтению
Фил Ранжин
монада не даёт наивысшую надёжнотсь
имеется ввиду из того что есть в C#
Anatoly
имеется ввиду из того что есть в C#
эксепшны дают выше надёжность
Фил Ранжин
Раскрой мысль
Anatoly
Так как в C# (мы же про него говорим?) нет контроля за тем, что ты все кейсы своего Maybe/Option/Nullable прочекаешь, то у тебя может произойти далее по стеку: - NRE/MaybeNonReferenceException - или же решение будет принято неверно Зачастую, но не всегда, выбрасывание исключения надёжнее, потому что закрешит приложение/обработку конкретного запроса и не приведёт к принятию кривых решений
Фил Ранжин
погоди
Фил Ранжин
у меня столько же контроля за кейсами, как и в F#
Фил Ранжин
и даже если ты не все прочекаешь, а напишешь что делать только в случае сакссеса, это не приведет к принятию кривых решений
Фил Ранжин
а приведет к игнорированию ошибки, и конкретному не отработавшему моулю
Фил Ранжин
а систему не порушит
Anatoly
и даже если ты не все прочекаешь, а напишешь что делать только в случае сакссеса, это не приведет к принятию кривых решений
именно порушит, ты получил юзера, его нет, ты не проверил, а потом запустил ракету и нью-йорка больше нет
Anatoly
с эксепшном у тебя просто всё покрешилось и до запуска ракеты ты не дошёл
Anatoly
Это же чисто от программиста зависит, ничего не мешает завернуть в try и принять неверное решение
ну потому что потушить эксепшн - это усилие, точно также как проверить монаду. давай рассматривать одинаковые кейсы - усилия не приложены?
Anatoly
Так у меня не получится этого юзера в ракету посадить
а это может не требоваться, проверка наличия юзера - это часть авторизации.
Фил Ранжин
Монада заставляет их прикладывать
Anatoly
Монада заставляет их прикладывать
в C# она никак не заставляет и встроена в язык с ссылочными типами по умолчанию.
Anatoly
нет отличия в C# между Maybe<User> и User?
Anatoly
Ну обсуждали ж вчера
я вчера читал договор с банком, это длительное занятие, поэтому пропустил
Nikolay
с эксепшном у тебя просто всё покрешилось и до запуска ракеты ты не дошёл
А если ты стреляешь из автомата, у тебя застряла гильза и затвор заклинило, и вместо того, чтобы обработать этот кейс, у тебя автомат просто взрывается в руках
Anatoly
Хотя как ты её продолжишь на заклинившем затворе - не ясно.
Nikolay
Хотя как ты её продолжишь на заклинившем затворе - не ясно.
Ну эксепшн как раз про то, что не сможешь стрелять дальше
Anatoly
Ну эксепшн как раз про то, что не сможешь стрелять дальше
ну, а ты и не сможешь, если затвор заклинило
Anatoly
там есть херовая ситуация, когда выстрел не произошёл, хотя боёк по капсюлю стукнул
Nikolay
ну, а ты и не сможешь, если затвор заклинило
Ну ты и не знаешь что делать, у тебя затвор заклинило и всё
Nikolay
Повторно нажимаешь на курок, не стреляет
Nikolay
Нужно звать старшего, чтобы он вытащил гильзу
Anatoly
Ну ты и не знаешь что делать, у тебя затвор заклинило и всё
да, поэтому в тире при любых отказах ты крешишь процесс стрельбы и зовёшь инструктора
Nikolay
А в бою как быть?
Anatoly
а в бою, ты крешишь процесс стрельбы и устраняешь отказ. Т.е. подкладываешь юзера в базу или правильные креды присылаешь
Nikolay
Пока ты дождёшься, тебя уже убьют
Anatoly
Ну так это кто-то за тебя должен подойти и сделать
ты не понимаешь. при любом отказе оружия ты прекращаешь стрельбу.
Anatoly
затем ты устраняешь отказ, либо по SPORT, либо по другой мнемонике
Anatoly
и если отказ устранён, ты начинаешь стрельбу заново
Nikolay
Так ты можешь пистолет достать/штык нож применить
Nikolay
Опять же, это про обработку ошибок
Nikolay
А не всё покрешилось
Nikolay
Помогите, у меня оружие заклинило
Anatoly
А не всё покрешилось
если ты не видишь разницу, "без усилий со стороны девелопера, приложение упало и не произвело кривых действий" и "при правильной обработке монады, приложение не произведёт кривых действий", то давай не будем тратить время друг друга, пожалуйста?
Anatoly
если девелоперы умеют работают с монадой Maybe, они и на null везде прочекают, разницы никакой
Nikolay
А почему приложение должно именно кривые действия производить, а не останавливать выполнение любых действий при возникновении ошибки?
Nikolay
Если у тебя на пульт управления ракетой, пришёл кривой сигнал от датчика, у тебя же не должна вся панель управления ракетой крашиться
Крылатый
Она не крашится, там алгоритм остановки, если и с резервного датчика пришла аномалия.
Nikolay
Она не крашится, там алгоритм остановки, если и с резервного датчика пришла аномалия.
Ты выполняешь обработку сигнала на мейн треде, для отображения на панели, у тебя вылетает IndexOutOfBoundException и привет
Anatoly
А почему приложение должно именно кривые действия производить, а не останавливать выполнение любых действий при возникновении ошибки?
потому что зачем проверяют возвращаемое значение от метода, в идеале, что там не нулл? чтобы не совершить кривых действий, логика какая-то придумана на это, верно? вот монада Maybe в C# помогает тебе сделать больше кривых действий
Nikolay
почти именно так Фобос-Грунт утонул.
Ну к сожалению, в полете зачастую нельзя резко остановиться и ждать действий человека
Roman
И действительно очень годно. Прям или мысли прочитал и развил. Крайне рекомендую к прочтению
Теперь кстати понятно, почему ты бесился, когда тебя менеджером назвали
Ayrat
Теперь кстати понятно, почему ты бесился, когда тебя менеджером назвали
Да, у нас именно такая система. И всё именно так и работает
Ayrat
прям аж зубы сводит
Roman
прям аж зубы сводит
Пушто приходится отчитываться перед дармоедами? Или душа болит, что им кучу денег платят?
Ayrat
Им к слову не платят кучу денег
Ayrat
Но эти пидоры определяют насколько я хорош при том что им похуй насколько я хорош
Ayrat
Откуда инфа?)
Я точно знаю чо почём. Компенсейшн у манагеров и Individual contributor одинаковый на одинаковых левелах Единственное чо, у манагеров левелов больше
Roman
А, ну в моем понимании это куча денег, учитывая количество полезного труда)
Vasily
@eglyph Годная статья
Vladislav
Какая