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

Старая тема, что там сейчас хипсторы возвращают из суспенд функций

в репозиториях?
1) Model + exception
2) Result<Model> котлиновский
3) Either<Throwable, Model> из arrow
4) Своя обертка? Какая и почему?

2 ответов

25 просмотров

У меня на одном проекте 2 вариант, на втором 4 вариант 4 вариант это силед класс с позитивным вариантом и двумя вариантами ошибки, исходя из которых нужно юай по разному рисовать :) Какой-то разницы в использовании обеих вариантов не заметил, просто так исторически сложилось и конкретный вариант лучше ложился под архитектуру целого приложения

Я за объединение 1 и 2-3 вариантов. Result\Either используются для обозначения результата функции, где могут быть как успешные, так и негативные варианты. Например, пользователь логинется. Успешно — данные верные, неуспешно — ошибка в пароле. Это не ошибка системы, это ошибка приложения, которую надо обработать. Выброс эксепшенов же используется для чего-то действительно непредвиденного или ломающего флоу. Например, каким-либо образом поломалась схема БД у пользователя. Это ситуация в которой невозможно отработать нормально. Но выброс эксепшенов тут дело редкое, обычно они исходят от системы. И в таком случае совсем необязательно использовать Throwable, т.к. все ошибки это что-то локальное для приложения. Хоть строку, хоть енам, хоть силды передавай. Точно считаю 1 вариант плохим в реалиях котлина, т.к. нет checked exceptions, а значит очень легко обосраться не вставив где надо try\catch. А так 2-4 варианты обычно одно и тоже выходит.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта