Vasily
Ну т.е. гарантий все равно не будет
Фил Ранжин
трит варнингс эс еррорс
Фил Ранжин
но их будет больше
Фил Ранжин
ты ж тоже баги пишешь
Фил Ранжин
т.е. вот ты - не гарантия
Vasily
трит варнингс эс еррорс
Фил, я тебе уже говорил, что полагаться на человеческий фактор нельзя?
Фил Ранжин
но я предпочел бы тебя, а не долбаёба
Фил Ранжин
Фил, я тебе уже говорил, что полагаться на человеческий фактор нельзя?
так в этом и идеология. Как можно больше вещей забирать у человека и отдавать машине
Фил Ранжин
Мэйби, налабл - это все вот эта история
Фил Ранжин
снижение человеческого фактора
Фил Ранжин
при этом есть класс долбаёбов, от которых ничего не спасёт
Фил Ранжин
это да
Vasily
так в этом и идеология. Как можно больше вещей забирать у человека и отдавать машине
Проблема в том, что c# не подталкивает тебя писать безопасно
Vasily
Он дает такую возможность
Фил Ранжин
да, абсолютно
Vasily
И на длинной дистанции обязательно ебанет
Фил Ранжин
так да. Но как бы, сколько раз ебанет, насколько сильно
Фил Ранжин
выбор то простой, ты или противодействешь, или нет
Фил Ранжин
я ж не могу всех на Ф пересадить
Фил Ранжин
бляя, а прикиньте какой тулинг бы вырос вокруг фшарпа
Фил Ранжин
если бы все на нем писали
Ilya
Интересно, а можно сделать, чтобы в этих ваших идрисах ебануло?
Фил Ранжин
Теорема геделя же
Ilya
Мы обречены.
Фил Ранжин
есть кейсы, которые не выразишь системой типов
Фил Ранжин
и вот в них то и ебанет
Фил Ранжин
я кстати предрекаю, что меня за эту статью хуями закидают
Фил Ранжин
скажут, что ошибки и не надо обрабатывать
Ilya
Их надо логировать и игнорить!
Vasily
скажут, что ошибки и не надо обрабатывать
Ну очень спорно, что их надо обрабатывать прямо так, как ты описываешь
Фил Ранжин
исключения то вообще ничего не гарантируют, и вот тут ты полагаешься на человеческий фактор
Фил Ранжин
в сишарпе исключение - часть реализации а не контракта
Фил Ранжин
это какая-то лютая ебанина
Фил Ранжин
мои варианты тоже не сахар
Фил Ранжин
но они лучше
Vasily
В каждом конкретном случае надо смотреть
Фил Ранжин
дай случай, где надо именно исключение
Vladislav
можно байтоебить на сишарпе как на плюсах например но по факту все будут структуры с копированием передовать потому что дефолтное поведение
Vasily
дай случай, где надо именно исключение
Ошибки интеропа непредвиденные
Nikolay
ебать как же это просто нынче
Хз как сейчас, но пару лет назад было такое себе. Чтобы нормально прокинуть какой-то файл с хоста на виртуалку, нужно какие-то дикие бубны использовать
Фил Ранжин
Ошибки интеропа непредвиденные
хм, давай-ка я генерализую. Кейс, когда у нас отвалился какой-то модуль, и больше к нему приходить не нужно
Nikolay
Еще были проблемы с драйверами, виртуалка не видела без бубнов нормальное разрешение экрана
Igor
Хз как сейчас, но пару лет назад было такое себе. Чтобы нормально прокинуть какой-то файл с хоста на виртуалку, нужно какие-то дикие бубны использовать
ну шары всегда работают. один раз настроил и всё. а если линукс, то там через ssh работает. также есть графические проги типа winscp
Ilya
дай случай, где надо именно исключение
Да любые исключение, где остаётся только руками развести. Ошибка записи на диск, например.
Nikolay
А, еще самая главная проблема была, я юзал докер, а он под капотом юзает virtualbox, и соответственно нельзя одновременно держать VirtualBox и Hyper-V
Nikolay
А докер в WSL в то время криво работал, были какие-то траблы с симлинками
Roman
И на длинной дистанции обязательно ебанет
так вы об одном твердите. Фил как раз пытается показать, что стандартный механизм обработки ошибок на длинной дистанции будет взрываться чаще, чем некоторые другие варианты. При одном и том же уровне долбоебизма
Anonymous
ага, к каждой функции по енаму, к каждому енаму по обработчику
К каждой критической функции и без того документация как минимум, не вижу проблемы. Для всего остально булеанаов обычно хватает.
Anonymous
А если тебе надо реально развёрнуто веер ошибок, то какая разница? Ведь их спектр объективный.
Roman
вот кстати тоже охуенная статья от того же чувака https://defmacro.substack.com/p/how-to-get-promoted
🇺🇦 Дмитрий
Мужчины, кому не лень, дайте фидбек. Написал тут про работу с исключениями в C# https://github.com/philippranzhin/my-obrecheny-articles/blob/main/articles/exceptionHandling.md
На счет out Не подходит для случаев, когда хотим передать вызывающему коду причину ошибки. На самом деле, мы можем добавить второй out-параметр, error: Exception Есть не плохой варинт возвращать не bool а статус, а в out значени И код уже будет по типу такой var a = service.GetUser(out var user); if a = Success then ...
Фил Ранжин
ну да, тут уже писали
Vasiliy
А можно как-то в Райдере сделать вот эти поля тоньше? а то прям 3см едят
Фил Ранжин
подумаю, как в статью встроить
🇺🇦 Дмитрий
Ну мы ж на сигнатуру смотрим :)
Крылатый
Хорошая статья.
Anonymous
тут вот какой минус. tryPattern привычен. Именно с булом. И ты теряешь в идиоматичности
Это не так, просто в дотнете не прижилось. Почти все системные вызовы возвращают код ошибки, а результат инициализируются по ссылке.
Anonymous
И ничего, живут, цветут и пахнут.
Anonymous
Но я не вполне понимаю, чего ты уперся в эту мнимую идиоматичность? Она движется и меняется как и все, никто не запрещает тебе применять что-то другое и уж точно не таким ты собьёшь с толку разраба; кто понимает необходимость проветрить булеан, сможет и инт заматчить.
Vladyslav
на самом деле еще норм вариант из Go, (User, Error) GetUser(userId) хоть мне и не нравится вечные if на ошибку, но это может быть здравым шагом на пути к Result
Фил Ранжин
Очень слабые гарантии
Фил Ранжин
Хотя с включённым nullable норм
Doge
Мне кажется во всех этих обсуждениях про ошибки надо разделять бизнесовые и инфраструктурные ошибки прежде всего. Бизнесовые - это те, которые обычно нужно и возможно как-то разумно обработать, инфраструктурные обычно (кроме разве что ретрая) обработать по месту бессмысленно и их прокидывают наверх. И собственно, для первых ошибок отлично резалты подходят, для вторых - исключения
Doge
И соответственно оба этих варианта вполне можно сочетать в рамках одного приложения.
Stas
А как называется процес, когда надо аутентифицировать юзера чисто по линке? Т.е юзеру кидают линку и он по ней переходит и дальше работает. Т.е тот же процес, что и с логин/пароль - только по линке...
Vasily
Причем линк должен быть одноразовым
Stas
Magic link
спасибо, пошел гуглить)