
Алексей
20.07.2018
11:56:33

Andrey
20.07.2018
11:56:41
почему?

Алексей
20.07.2018
11:57:42
потому что
1) это довольно частая тривиальная операция
2) во многих языках это делается с помощью 0 строчек кода, то есть автоматически
точнее почти во всех языках

Google

Andrey
20.07.2018
11:58:30
так а минусы то какие?
если вы так быстро придумываете код, что вас тормозит написание 3х строчек, то поздравляю
на это есть шорткаты в редакторе

Алексей
20.07.2018
12:00:43
а давайте вместо знака + писать add_two_numbers?
почему бы и нет?
ведь есть шорткаты в редакторе
дело в том, что простые вещи должны делаться просто

Andrey
20.07.2018
12:01:19
давайте вы не будете передёргивать, это неуместная аналогия

Алексей
20.07.2018
12:01:29
если вы этого не понимаете, то мне не очем с вами больше разговаривать

Andrey
20.07.2018
12:02:01
вас просто бомбит, с кем не бывает. гнев - первая стадия

Илья
20.07.2018
12:02:02
я не знаю о чем и с кем вы тут обсуждаете свои вкусы динамических языков программирования, при это уже давно :(

Andrey
20.07.2018
12:02:13
no offence

Алексей
20.07.2018
12:02:15

Google

Алексей
20.07.2018
12:02:20
абсолютно

Илья
20.07.2018
12:03:01

Andrey
20.07.2018
12:03:08
ну, люди меняются :)

Алексей
20.07.2018
12:03:23

Andrey
20.07.2018
12:03:29

Алексей
20.07.2018
12:04:45
В C++ есть эксепшены, в Java, C#, Python, JS и ещё кучи мест. Там где нет эксепшенов почему то вводят всякие краткие и удобные штуки для их замены. В Go так не сделали

Andrey
20.07.2018
12:05:09
в го есть паники

Denis
20.07.2018
12:05:33

Алексей
20.07.2018
12:06:05
в го есть паники
Я их называю "исключения для бедных". И их постоянное использование не приветствуется, да и чужой код их как правило не юзает.

Andrey
20.07.2018
12:06:25
в лиспе нет исключений

Andrei
20.07.2018
12:06:46
лисп даже старше чем си

Алексей
20.07.2018
12:07:05
А средства сделать такой проброс (если его нет) точно есть

Andrey
20.07.2018
12:08:15
в swift говорят нету тоже

Илья
20.07.2018
12:09:07
http://xahlee.info/comp/why_i_hate_exceptions.html

Алексей
20.07.2018
12:10:14

Andrei
20.07.2018
12:10:39

Google

Andrey
20.07.2018
12:11:14
а, старые данные значит

Andrei
20.07.2018
12:11:21
в swift говорят нету тоже
а еще там есть паттернг матчинг и еще очень много всякого вкусного, не зря его сейчас активно тянут в серверную разработку

Илья
20.07.2018
12:12:04

Алексей
20.07.2018
12:12:33

Vladimir
20.07.2018
12:14:21
Я в своем коде каждую ошибку оборачиваю в другую ошибку с доп информацией, которую считаю нужной (метка места возникновения, может переменные, может текст), и ее уже возвращаю. Типа myerrors.New(“myfunc: err with path: “, path, err). Такая вот эмуляция стектрейса. В конечном счете жить можно.

Илья
20.07.2018
12:14:29

Andrei
20.07.2018
12:15:15
вообще то есть
хотя нет, это не экспешены в том смысле, в котором это реализованно в других языках, это специальные возвращаемые значения, которые по-умолчанию пробрасываются вверх по стеку
короче реализация обработки ошибок близка к идеальной
https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html кому интересно

Vladimir
20.07.2018
12:17:30
А вообще, к го2 подумывают что-то с ошибками сделать (сделать их типизированными вроде), но это не точно)

Andrei
20.07.2018
12:18:51

Илья
20.07.2018
12:18:54

Aid
20.07.2018
12:18:58

Илья
20.07.2018
12:22:31

Антон
20.07.2018
12:23:12

Илья
20.07.2018
12:23:48

Антон
20.07.2018
12:24:05

Vladimir
20.07.2018
12:24:16

Andrei
20.07.2018
12:24:23

Алексей
20.07.2018
12:24:23

Google

Илья
20.07.2018
12:24:51

Vladimir
20.07.2018
12:25:16

Антон
20.07.2018
12:25:45

Алексей
20.07.2018
12:26:05
А зря

Илья
20.07.2018
12:27:22

Andrey
20.07.2018
12:28:00
err != nil перестанет работать

Denis
20.07.2018
12:28:36

Admin
ERROR: S client not available

Andrey
20.07.2018
12:28:44
потому что интерфейс

Илья
20.07.2018
12:28:55
??????

Антон
20.07.2018
12:29:35

Denis
20.07.2018
12:30:20

Andrey
20.07.2018
12:30:55
??????
https://divan.github.io/posts/avoid_gotchas/#interfaces

Антон
20.07.2018
12:31:30

Илья
20.07.2018
12:31:30

Антон
20.07.2018
12:31:50

Илья
20.07.2018
12:32:40
гуд джоб, наверное

Denis
20.07.2018
12:32:47
А что в default?
стандартное поведение
P.S - типизированые ошибки я рассмартриваю исключительно как контейнер с доп. информацией об ошибке, напр. последний запрос с БД который отвалился или что то еще

Google

Илья
20.07.2018
12:33:30

Denis
20.07.2018
12:34:26
как Result в расте

Илья
20.07.2018
12:36:01

Антон
20.07.2018
12:36:09
как Result в расте
Без try! или ? обработка ошибок была бы столь же многословной, как и в Go

Andrey
20.07.2018
12:36:49

Илья
20.07.2018
12:37:29

Denis
20.07.2018
12:38:10
с одной стороны можно забить и юзать _ но это не по канону

Илья
20.07.2018
12:40:48
иногда и правда зря есть возврат ошибки, бывает
обычно такое сделано для реализации стандартных интерфейсов, и, помоему, не всегда осмысленно

Andrey
20.07.2018
12:43:10
попробуйте сказать, какая ветка выполнится до Run
именно поэтому вам нельзя возвращать типизированную ошибку, только интерфейс
ну или можно, если ваш код видите только вы

Илья
20.07.2018
12:47:58
можно и нужно возвращать типизированные ошибки

Andrey
20.07.2018
12:48:52
так вы интерфейс возвращаете
что вам даст типизированная ошибка, если внешний код видит только метод Error()?
придётся кастовать

Илья
20.07.2018
12:50:12
эм, а паттерн матчинг что делает по вашему?