Здравствуйте, vsb, Вы писали:
vsb>Во-первых у каждой функции с ошибками надо возвращать Result вместо конкретного типа. Это как минимум синтаксический шум.
Вместо T возвращаешь Result<T, MyError>
vsb>Во-вторых если функция сейчас не бросает ошибок, а завтра начинает бросать, мне надо менять её тип, потом проходить по всем местам её использования и как минимум добавлять туда этот самый вопросик.
Неявные точки выхода это зло.
vsb>Потенциально надо рекурсивно менять тип этой вызывающий функции и так далее.
С checked exceptions то же самое. А unchecked это зло.
vsb>vsb>List<Integer> parseStrings(List<String> strings) {
vsb> return strings.stream().map(s -> Integer.parseInt(s)).toList();
vsb>}
vsb>
vsb>есть у меня подозрение, что вопросиком тут не отделаешься. Конечно на выходе нужен именно результат над списком чисел, а не список результатов над числами.
https://doc.rust-lang.org/rust-by-example/error/iter_result.html#fail-the-entire-operation-with-collect
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте