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

5 ответов

9 просмотров

> Как следствие возможно делать простые цепочки действий с минимальным количеством кода которые просто превращают один саксес в следующий пока не пройдут все итерации. Как и в случае с throw, но только кода не минимальное кол-во, а нулевое. :) > А если случается ошибка - она просто проходит дальше по цепочке резалтов пока не дойдет до точки вывода ошибки в интерфейс. Как и в случае с throw. :) С минимальным кол-вом кода, которое требуется только в месте выхода ошибки в интерфейс, а на нижележащих уровнях он не требуется. Не пойму твоей одержимости резалтами. По большому счету, между резалтами и throwing принципиальной разницы нет, вся разница, что есть — она в деталях. Но в целом throwing более гладко и с меньшим кол-вом усилий реализуется. Ошибка может подниматься из глубин иерархии на самый верх к месту ее обработки с нулевым кол-вом доп. кода, неявно. Потому что добавить "throws" к сигнатуре функции — это действительно нулевое усилие. Ну ладно, не ноль, а 0.000000000001 ;)

Куся 🌿⃤ __UKS- Автор вопроса
Alex Sherbakov
> Как следствие возможно делать простые цепочки де...

можешь показать тот же код что я написал там на throw?)

А причем здесь код, который ты написал? Я сравниваю каноническое использование того и другого. Ваши вчерашние ночные упражнения меня вообще не торкнули, я впервые за много месяцев позволил себе пролистать все новые сообщения чата не читая. :) Ты просто за резалты уже не в первый раз агитируешь (поливая throws при этом), а мне не очень понятно, зачем — эту бы энергию да в мирное русло, потому что отличий там действительно совсем немного. Метод/функция, возвращающая кортеж (T, Error) делает это явно. Метод/функция, возвращающая Result<T, Error> делает это тоже явно, но результат — это одно значение, а не кортеж, т.е. добавлен "контейнер" и унифицированный API работы с этим контейнером (.success/.failure) Метод/функция throws, возвращающая явно T и неявно Error — это дальнейшее абстрагирование, только и всего. Error вообще никак явно не анализируется в возвращаемом значении, если это не требуется на текущей ступени иерархии, а прокидывается выше неявно. Если надо обработать — do/catch. Ну соглашусь, это несколько более громоздкая конструкция, нежели switch .success/.falure, ну да и хрен бы с ней, пусть будет компенсация за упрощение и уменьшение кол-ва кода во всех остальных местах. Непринципиально. Повторюсь — принципиальных различий между всеми тремя способами нет. Во всех трех случаях назад возвращается 2 значения (результат выполнения либо ошибка). В текущем iOS-приложении использую в основном резалты (главным образом, в сетевом стеке), в вапоре всегда использую throws (вапор навязывает этот стиль). Сравнивая эти 2 подхода могу сказать, что если на промежуточном уровне иерархии мне надо выполнить какие-то действия с результатом, то с throws я просто их выполняю и всё. С резалтами же значение приходится разбирать на .success/.failure и прокидывать выше уже по-отдельности. Суммарно с throws кода меньше, простоты больше, прокидывание ошибок происходит неявно "за сценой", ты на нее внимания не обращаешь. В любом случае, эти 2 подхода не стоят и десятой части усилий на агитацию за любой из них, что ты уже потратил. :) Лично мне нравятся оба примерно в равной степени.

Куся 🌿⃤ __UKS- Автор вопроса
Alex Sherbakov
А причем здесь код, который ты написал? Я сравнива...

» Ну соглашусь, это несколько более громоздкая конструкция, нежели switch .success/.falure, ^^ в работе не использую даже switch для резалтов) Ну то есть где-то в загашниках в екстеншнах они есть, но на практике я себе еще упростил синтаксис работы с резалтами)

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
46
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
вопрос странный немного... в секции interface идёт константа const TableExt: array [0..39] of record _type: byte; _ext : string; end = ( (_type:typeDAT ...
Alexey Kulakov
5
Всем привет! Помогите разобраться с Lazarus. Переношу программу с Delphi 10.2 Tokyo на Lazarus 3.2. У меня есть строка string которая изначально имеет такое содержание (то чт...
Дмитрий Завгородний
4
Карта сайта