
Alexander
12.01.2018
07:26:46
да, только индустрией все равно управляют западные кодеры)))
всякие там best practice - шаблон мышления, не более

Michael
12.01.2018
07:27:31
что за предрассудки

Alexander
12.01.2018
07:28:26
это как в случае с graphql, нсли бы ее разработал дадя ваня а не facebook ей никто бы и не пользовался, так как распространение информации слишком мало...

Google

Alexander
12.01.2018
07:28:45
так и react)
но тут еще временной фактор играет роль

Michael
12.01.2018
07:29:19
ну так Ваня из лицокниги молодец
там такие же человеки работают, разница в отношениии к человекам
и хз как это привязано к чату о гоу

Alexander
12.01.2018
07:30:11
не совсем да я и не про это
best practice идет от популярный пакетов и команд соответсвенно

Michael
12.01.2018
07:31:48
бест практисы микрософта))))
ой вей

Alexander
12.01.2018
07:31:57
)))

Michael
12.01.2018
07:35:14
пока одминство спит нашёлся стандарт С11
там есть такое:
Type-generic expressions using the _Generic keyword.
может кто-то это использовал и имеет смысл фитч реквест запилить?

Никита
12.01.2018
08:01:13
так и react)
В рамках оффтопа хочется упомянуть vuejs, который изначально был написан дядей Ваней Китай эдишн

Александр
12.01.2018
08:01:17
спать охото, сцук

Google

Nikolay
12.01.2018
08:01:57


Alexander
12.01.2018
08:20:21
В рамках оффтопа хочется упомянуть vuejs, который изначально был написан дядей Ваней Китай эдишн
Из интервью:
Хорошо, когда и как ты столкнулся с проблемой, которую попытался решить с помощью фреймворка Vue.js?
Моя работа в Google была связана с активным созданием прототипов в браузере. У нас появлялась идея, и мы хотели как можно быстрее получить что-то ощутимое. В то время некоторые проекты использовали Angular. Мне Angular понравился наличием таких крутых вещей, как привязка данных и управление данных через DOM, поэтому вам не нужно работать напрямую с DOM. Это также привело к появлению всех этих дополнительных концепций, которые позволяли вам структурировать код так, как вам хотелось. Но это было слишком сложно для тех сценариев использования, с которыми я столкнулся в то время.
))


Никита
12.01.2018
08:40:59
ну так или иначе инструменты рождаются не от нечего делать, а чтобы закрыть какую то потребность. да чувак из гугла это сделал, но как сайд-проект

Nikolay
12.01.2018
08:42:46

Никита
12.01.2018
08:43:17
а спиннер это инструмент?

Nikolay
12.01.2018
08:43:51
Ну а почему нет

Никита
12.01.2018
08:43:54
ну типа да, можно придраться к словам, полно всякого барахла на гитхабе созданного именно от нечего делать
даже если представить спиннер как инструмент - не знаю, успокаивать обсессивно-компульсивное расстройство
мой посыл заключался в том что ок, опыт работы в гугле послужил причиной создания вуя. и это более чем закономерно, однако непосредственно гугл тут едва ли при делах

Alexander
12.01.2018
09:11:34

?
12.01.2018
12:48:18
https://beta.golang.org/doc/go1.10

Alexander
12.01.2018
12:52:21

?
12.01.2018
12:52:40
чего рано?

Александр
12.01.2018
13:02:02
вопрос по бестпрактик
представим что у нас функция скажем
func new() (*Connect, Error) {
bind, err := ...
if err != nil {
returm nil, err
}
err = anylib.func()
if err != nil {
if !ignoreError(err) {
returm nil, err
}
}
return connect, err
}
мы используем один и тот-же err на несколько вызовов
+ игнорование ошибок в некоторых случаях

Google

Александр
12.01.2018
13:06:34
у меня забавно вышло, когда ошибка ушла в игнор и "проехав" несколько if ушла в main

Vany
12.01.2018
13:07:43
а как так получилось, ей же что то присваивалось?

Александр
12.01.2018
13:08:12
хз O_o
я удивлен что := не ругался

Vany
12.01.2018
13:08:38
или ей присваивалось в скупе, а проверялась снаружи старая?
:= проверяет только первую переменную,

nezorflame
12.01.2018
13:09:59
стоп
init в плане прямо инит?
в нем не должно быть аргументов и возвращаемых значений
by design

Александр
12.01.2018
13:10:35
нет ? я просто не удачно обозвал в примере

nezorflame
12.01.2018
13:10:43
а, ффух

Александр
12.01.2018
13:11:16
получается лучше на каждый блок свой err использовать

nezorflame
12.01.2018
13:13:45
необязательно

Александр
12.01.2018
13:13:58
на самом деле там либа кривая
возращает ошибку которую надо игнорировать
именно в err
что-то типо варнинга

nezorflame
12.01.2018
13:14:28
жесть

Александр
12.01.2018
13:14:35
из за этого пришлось вставить проверку в if err != nil

Google

Александр
12.01.2018
13:14:52
из за этого "пробило" прямо в main

Vany
12.01.2018
13:16:33
Чёт у меня не получилось

Александр
12.01.2018
13:16:48
что не получилось?

Vany
12.01.2018
13:16:48
var A=0
func cnt() (int, error) {
A+=1
return A, errors.New(fmt.Sprintf("Error %d", A))
}
func t4(){
_,err := cnt()
if err != nil {
if _,err := cnt(); err != nil {
log.Println(err)
}
}
log.Println(err)
}
у вас там ещё где то проблема

Александр
12.01.2018
13:17:52
да нет проблемы, на самом деле там еще блок с if был
но я случайно сделал := внутри if
а там область видимости другая получилось

Admin
ERROR: S client not available

Vany
12.01.2018
13:18:18
то что обявляется в условии ифа принадлежит скупу ифа

Александр
12.01.2018
13:18:26
в резульате не юзабельное УГ просочилось вместе с валидным коннектом ?
(наверно плохо объяснил)

Vany
12.01.2018
13:18:45
:= всегда объявляет вторую переменную, если её нет в скупе

Александр
12.01.2018
13:19:34
func new() (*Connect, Error) {
bind, err := ...
if err != nil {
returm nil, err
}
err = anylib.func()
if err != nil {
if !ignoreError(err) {
returm nil, err
}
}
if blabla {
err := funcblabla()
}
return connect, err
}
вот так случайно сделал
поскольку ignoreError отработал на отличненько, он подсунул err который не юзабельный
в результате получилось что и коннект валидный, и ошибка просочилась
которую игнорровали
поэтому каскады на одном err зло ?

Alex
12.01.2018
13:22:00

Google

Vany
12.01.2018
13:22:12
=) Нет, если ignoreError правильный - в этом коде ничего не просачивается

Александр
12.01.2018
13:23:19
в каком смысле правильный?
конечно по хорошему "Зачистить" бы
что там дальше ошибка с областью видимости, такого не учитывается

Vany
12.01.2018
13:27:18
тоже нет, на сколько я понял у вас вот так:
func t4(){
_,err := cnt()
if err != nil {
if _,err := cnt(); err != nil {
log.Println(err)
}
}
log.Println(err)
i,err := strconv.Atoi("25")
log.Println(i, err)
}
в моём случае atoi не возвращает ошибки ... и всё ок

Александр
12.01.2018
13:28:04
не ошибка в блоке прямо перед return
так вышло
тоесть последняя проверка писала в "свой" err
а вернуло то "глобальную" err с мусором на борту ?

nezorflame
12.01.2018
13:29:21
error shadowing произошел, в общем

Vany
12.01.2018
13:29:28
гист посмотреть можно?

Александр
12.01.2018
13:30:48
гист?

nezorflame
12.01.2018
13:30:53
сорцы
https://gist.github.com/

Александр
12.01.2018
13:31:39
ну во первых там много контекста, наверно я смогу пример сделать попроще

Vany
12.01.2018
13:32:45
ТОлько проверь, что он делает именно это
а вообще швыряй как есть, гист всё стерпит

Александр
12.01.2018
13:35:23
но в принципе я и так уже объяснил
что нельзя полагатся на "затирание" err