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

Т.Е. Either, как альтернатива выбрасыванию исключений — это по вашему

ненормальная практика? И если кто-то использует throw для Control Flow Interruption, там где без этого можно/нужно обойтись, как это может меня побудить следовать этому, пусть даже это будут те, кто создают Flutter?

14 ответов

12 просмотров

Кажется это вы ничего в этом споре не поняли. Прочитайте это сообщение еще раз: https://t.me/rudart/753988

Dmitrii-Cheremisov Автор вопроса
MiT
Кажется это вы ничего в этом споре не поняли. Проч...

И что это меняет? Тем более я там не вижу какого-то кода. Ему советуют сделать https://t.me/rudart/753983 т.е. либо вернуть результат либо try-catch НЕ результат, а используя Either можно/нужно этого избежать. Я об этом.

Dmitrii Cheremisov
И что это меняет? Тем более я там не вижу какого-т...

Ладно, у меня уже нет времени и желания с вам спорить...

Dmitrii-Cheremisov Автор вопроса
MiT
Ладно, у меня уже нет времени и желания с вам спор...

Т.е. если вам придется возвращать либо результат, либо НЕ результат вы выберете конструкцию с throw и try-catch, а не Either? Ну, или какие-то данные, где может быть либо один тип, либо другой.

Dmitrii Cheremisov
Т.е. если вам придется возвращать либо результат, ...

> У меня предполагается, что try-catch сработает внутри блока initialization и вернется Left(AppError(..)) Где вы тут увидили либо результат, либо НЕ результат? Судя по сообщению есть какой-то метод initialization (скорее всего асинк), внутри которого есть try-catch значить блок кода который обернут в try-catch может вернуть ошибку (уже не подходит either/result). Более того, как мне кажется, там не один тип ошибки может вернуться (просто автор кода об это не думал еще). Так еще взгляните на это Left(AppError(..)), автор кода явно хочет вернуть и обработать ошибку дальше по коду иначе там бы не было бы в названии Error. Я даже предполагаю откуда автор кода подчеркнул идею с either, если интересно ввидите в поиске гитхаба: flutter clean architecture (первый репозиторий)

Dmitrii-Cheremisov Автор вопроса
MiT
> У меня предполагается, что try-catch сработает в...

то чего хотел автор сложно понять, но сопоставив его желание использовать Either и советы ему вместо Either использовать throw и try-catch я решил, что это плохой совет. Тем более, далее дискуссия переросла в несколько спорных утверждений: функциональщик, Доказать что то нам - не докажете, как бы вы не пытались, try catch - это базовое решение от самого языка — можно подумать что Either написан на каком-то другом языке и использует не базовые синтаксис/конструкции. Да и ваше заявление вместо того чтобы тянуть знания из других ЯП и натягивать их на dart довольно спорное, методология программирования она общая: парадигмы, принципы, паттерны. Те, кто не используют И функциональный подход (на самом деле используют, просто не осознают этого) просто ограничивают себя в инструментах. А Either — это уже паттерн.

MiT
> У меня предполагается, что try-catch сработает в...

Как мне кажется (просто я конечно же могу ошибаться), мне нужно сделать функцию, которая в случае успешного завершения ничего не возвращает, а в случае проблемы, возвращает код проблемы. На это меня натолкнула basic usage из pub.dev either_dart. Ошибки разный могут быть и все типы в enum (как в том же примере) В ходе обсуждения я понял, что что-то идет не так и either не подходит. А что за рипо, из которого я почерпнул идею? Первый в списке https://github.com/ResoCoder/flutter-tdd-clean-architecture-course. Он?

Dmitrii Cheremisov
то чего хотел автор сложно понять, но сопоставив е...

Удачи перетянуть методологию программирования с dart на go 1 и попытаться там перехватывать ошибки через try catch)

Dmitrii Cheremisov
go тут причем?

как пример перехода на следующий ЯП

Voffka
Как мне кажется (просто я конечно же могу ошибатьс...

Про репо я только "предполагал") Как мне кажется вам достаточно возвращать enum и игнорировать если он none/empty. И не нужно будет тянуть either_dart)

MiT
Про репо я только "предполагал") Как мне кажется ...

Да я уже давно понял, что either (или что там еще может быть) тут совершенно лишний. Всем спасибо! Тему можно считать закрытой и не стоящей холиваров😂

Dmitrii-Cheremisov Автор вопроса
MiT
Удачи перетянуть методологию программирования с da...

тут речь вообще не про ошибки, а про Control Flow Interruption я уже ссылался что это goto ну и много всего остального, чего нет при использовании Either. Я не понимаю, чем Either плох, вы видите что-то плохое в его использовании? Даже документация Bloc изобилует примерами CFI. В Bloс там много интересного, например инстанс который прикидывается методом — вот где галимая 😂 функциональщина, злая и бессмысленная — но Dart же позволяет!

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта