Илья
21.09.2017
15:45:36
Axm
21.09.2017
15:45:42
а как надо?
скажите еще, как отделить тест от пакета? чтобы переменные внутри тестов не были доступны пакету остальному. ну или как передать из TestMain нужные значения внутрь тестовых методов, не делая их глобальными?
Igor
21.09.2017
15:47:56
Google
Aleksandr
21.09.2017
15:48:02
Axm
21.09.2017
15:50:36
Aleksandr
21.09.2017
15:51:28
по хорошему есть вот такая крайность - каждый пакет у тебя автономная единица, для каждой зависимости имеющая свой интерфейс. и пакеты между собой общаются через адаптеры. но зачастую это оверинжинирнг
package A
type Client1 struct
type Client2 interface
type Client2BDecorator struct
package B
type Client2 struct
type Client1 interface
type Client1ADecorator struct
in favor
21.09.2017
15:55:51
Интересно
Aleksandr
21.09.2017
15:55:53
декораторы реализуют интерфейсы своего пакета, декорируя клиентов из другого пакета
Axm
21.09.2017
15:56:06
не, мне так сложно сейчас не надо, это будет слишком
Aleksandr
21.09.2017
15:56:19
это в полной парадигме clean arch но этого слишком много для связанных систем
Axm
21.09.2017
15:57:19
в данный момент у меня один пакет (клиент) вызывает по ходу работы метод другого пакета (клиента). то есть, запрашивает данные в другой системе.
и так в нескольких местах
Aleksandr
21.09.2017
15:59:05
положи интерфейс рядом с реализацией в каждом пакете
package A
type Client interface
type BaseClient struct
package B
type Client interface
type BaseClient struct
Google
Aleksandr
21.09.2017
16:00:37
если вообще тебе интерфейсы нужны
Axm
21.09.2017
16:01:02
нужны, надо тестировать, а для этого мокать
спасибо
Мерлин
21.09.2017
17:54:53
Sapir-Whorf on Programming Languages
https://blog.chewxy.com/2017/09/20/sapir-whorf-programming-languages/
Valentin
21.09.2017
17:59:52
Aleksandr
21.09.2017
18:07:11
Мерлин
21.09.2017
19:27:52
https://medium.com/@matryer/video-writing-beautiful-packages-in-go-fab1138608ee
Dion
21.09.2017
19:31:56
Чуваки, как все html тэги в строке порезать, без регулярок и strings.Replace?
Мерлин
21.09.2017
19:36:19
Dion
21.09.2017
19:37:46
Slava
21.09.2017
19:38:20
можешь свою написать
No
21.09.2017
22:46:11
Есть желание попробовать что-то сделать серьезное, типо написать эмуляьтор под ммо игру, если это не утопическая идея, то можете подсказать соответствующую литеруту)
Quet
21.09.2017
23:07:55
a tour of go?
Pawel
22.09.2017
04:39:22
Valentin
22.09.2017
05:26:10
Pawel
22.09.2017
05:39:45
Diasko
22.09.2017
05:42:39
Pawel
22.09.2017
05:43:33
Valentin
22.09.2017
05:47:01
Pawel
22.09.2017
05:47:12
Google
Valentin
22.09.2017
05:48:12
Не надо копипастить 5 раз инициализацию составной структуры
Michael
22.09.2017
05:57:10
Valentin
22.09.2017
06:01:11
Чтобы не приходилось делать это каждый раз
Pawel
22.09.2017
06:30:19
Не надо копипастить 5 раз инициализацию составной структуры
В теории - да. Но на практике DI бесполезна и обычно ведет к усложнению кода. Ответь по возможности на несколько вопросов, не обязательно в чатике - просто для себя.
— Зачем заводить кучу бесполезных интерфейсов ради DI, если за большинством таких интерфейсов на практике редко бывает более одной реализации?
— Как повлиять на порядок инициализации зависимостей и аргументы, используемые при их инициализации?
— Как сделать так, чтобы определенные зависимости создавались при каждом вызове функции, а другие — использовались повторно?
— Какие проблемы решает DI? Стоит ли решение этих проблем добавления геморроя по вышеуказанным вопросам?
— Как узнать, когда, в каком порядке и с какими аргументами были инициализированы зависимости, использующиеся в конкретной области кода? Как это влияет на debuggability и maintainability кода?
Valentin
22.09.2017
07:18:25
Какой то узкий кейс про порядок интциализации. DI же как раз абстрагирует клиентский код от инициализации, создавая зависимости по мере необходимости
Igor
22.09.2017
07:20:26
Mush
22.09.2017
07:29:23
что не день, то в этом чате гонят на общепринятый тот или иной темплейт разработки, называя его бесполезным
Axm
22.09.2017
07:34:50
Pawel
22.09.2017
07:36:32
я пытаюсь придумать случай чтобы порядок инициализации не имел значения. На ум приходит в основном хелуворд. Гошечка в том числе для того и придумана, чтобы прикладной код имел полный контроль над работой системой, а не полагался на неведомую магию
Igor
22.09.2017
07:36:35
Viktor
22.09.2017
07:39:35
Привет всем.
Есть ли сревис или утилитка для генерации struct на основе json ?
Димка
22.09.2017
07:40:01
Igor
22.09.2017
07:40:32
Pawel
22.09.2017
07:43:29
Mush
22.09.2017
07:49:19
я не жабодрочер и не любитель ооп, но тоже юзаю DI в го и это удобно
Pawel
22.09.2017
07:51:10
Igor
22.09.2017
07:51:17
Google
Daniel
22.09.2017
07:51:55
коллеги, остановитесь, а?
хорошего языка нам не дали еще, а плохие, хоть и прохи все по-разному, плохи одинаково
Igor
22.09.2017
07:53:00
Ilya
22.09.2017
07:55:32
Igor
22.09.2017
07:56:02
Возможно
Pawel
22.09.2017
07:58:42
У некоторых людей како-то имхо карго-культ SOLID или ФП. Объяснять им, что любая loc на Go - это инструкция, производящая сайд-эффект, бесполезно. Рецепт инициализации объектов - это вообще ужос
Alex
22.09.2017
08:03:15
Pawel
22.09.2017
08:03:36
Возможно, DI и SOLID может быть полезно в очень узкой нише, но слепое следование этим принципам на всех подряд проектах обычно ведет к бессмысленному усложнению кода и нагромождению бесполезных абстракций с визиторами по синглтонам. Почитайте на досуге https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction https://en.wikipedia.org/wiki/KISS_principle
Axm
22.09.2017
08:05:07
Pawel
22.09.2017
08:07:13
А что это, если не DI?
не вижу каким образом DI облегчит написание тестов. разве что внесёт дополнителную путаницу когда мокается не понятно что и тестируется конь в вакууме.
Igor
22.09.2017
08:09:55
@ruzzke_mir возниакет чувство, что вы вообще не понимаете, что скрывается под буквами DI и разговор идёт о разных вещах
Lanegan
22.09.2017
08:16:37
Коллеги, хай! Начал в Go совсем недавно, решил перетащить монолит с php(вот только не надо), на микросервисы. Решил заюзать grpc для общения между сервисами. Такой вопрос, на структуры которые генерятся из protobuf можно полагаться в проекте ? Это норм, реюзать их? Или следует рассматривать эти структуры только как контейнеры для перевозки данных?
Aleksandr
22.09.2017
08:17:20
Daniel
22.09.2017
08:17:21
Только для перевозки
Не следует вносить связность туда, где без нее можно обойтись
Vasily Romanov
22.09.2017
08:18:02
Зависит от того насколько плотно ты будешь их спользовать
Daniel
22.09.2017
08:18:15
Не зависит
Vasily Romanov
22.09.2017
08:19:06
Если это микро-сервис, который получил данные из базы и выплюнул наверх - то норм
Если куча-логики ещё там рядом - лучше нет
Daniel
22.09.2017
08:19:49
И мы завязали протокол и хранение намертво. Зачем?
Lanegan
22.09.2017
08:21:59
Google
Lanegan
22.09.2017
08:25:31
Тогда еще вопрос, чем можно копировать значения из одной структуры в другую? Писать свой метод, через рефлектор?
Daniel
22.09.2017
08:26:56
Совпадающие на 100% структуры копируются сами
Рефлектор - плохое решение
Lanegan
22.09.2017
08:27:10
Так вот если они не совпадают?
Daniel
22.09.2017
08:27:31
Или руками, или кодогенерацией
Я руками пишу
Vladislav
22.09.2017
08:28:24
Возможно можно через композицию твои проблемы решить.
Lanegan
22.09.2017
08:30:57
Унаследовать структуру которая сгенерилась из protobuf?
Самое простое решение - руками, конечно.
Daniel
22.09.2017
08:33:23
Наследовать так же плохо, как на прамую использовать
Vladislav
22.09.2017
08:35:18
Никто не мешает менять сами протобаф структуры и в них наследовать. (Ну а вообще копирование не всегда с протобаф связано). Тут нужно частный случай разбирать.
Lanegan
22.09.2017
08:41:55
Мне нужно добавить в базу строку с кучей полей(регистрация пользователя), но при этом сам протокол передает больше данных чем надо записать. Плюс для работы с базой выбрал go-pg orm(хотя теперь уже начал сомневаться, нужна ли она... laravel развращает). И тут сами руки тянутся использовать уже готовую структуру, передать в orm и вписать исключения для полей, которых нет в базе.
Но походу таки придется поработать руками. А для документации grpc есть какие-то инструменты ? Или protobuf это и есть документация ?
Kiku
22.09.2017
10:43:39
http://telegra.ph/Golang-09-20
Pawel
22.09.2017
11:24:53
Александр
22.09.2017
11:41:14
Коллеги, использую либу ffjson (кодогенерация), есть структура допустим из 10 полей. 3 из них с тегом json:"-". Нужно уметь маршалить/анмаршалить 7 полей или 10 полей в зависимости от ситуации
Как правильно сделать это? Еще одну структуру завести с полными тегами?