Size: a a a

2020 July 26

IK

Ilya Kaznacheev in Go-go!
Anton Kucherov
Так это про Геттеры. Те по методы доступа к приватному полю структуры. А вопрос был про функции пакета. 🤔
Суть то одна. Часто это те же геттеры для полей дефолтной переменной пакета
источник

AK

Anton Kucherov in Go-go!
В этом плане ‘ByID()’ такое себе imho название для экспортируемой функции пакета user.
источник

IK

Ilya Kaznacheev in Go-go!
В целом основное правило нейминга в го - минимальное понятное название
источник

IK

Ilya Kaznacheev in Go-go!
Если user.ByID() понятно что делает, значит этого достаточно
источник

IK

Ilya Kaznacheev in Go-go!
Если нет - значит нет
источник

S

Sergey in Go-go!
Anton Kucherov
В этом плане ‘ByID()’ такое себе imho название для экспортируемой функции пакета user.
u := users.ByID(userID) - ну вот куда более понятно, лаконично и красиво. не понятно будет только совсем начинающим, имхо
источник

Н

Никита in Go-go!
Отбрасывание Get относится только к геттерам структуры
источник

IK

Ilya Kaznacheev in Go-go!
На деле и так и так встречается, делайте по настроению
источник

Н

Никита in Go-go!
Go doesn't provide automatic support for getters and setters. There's nothing wrong with providing getters and setters yourself, and it's often appropriate to do so, but it's neither idiomatic nor necessary to put Get into the getter's name. If you have a field called owner (lower case, unexported), the getter method should be called Owner (upper case, exported), not GetOwner. The use of upper-case names for export provides the hook to discriminate the field from the method. A setter function, if needed, will likely be called SetOwner.
источник

p

pragus in Go-go!
А видел кто кодген для getters/setters?
источник

ВГ

Владимир Гришин... in Go-go!
Anton Kucherov
В этом плане ‘ByID()’ такое себе imho название для экспортируемой функции пакета user.
А что это может быть кроме получения по ид?
источник

МП

Мимо Проходящий... in Go-go!
Dmitry M
Можно в контекст засунуть
Це грех
источник

DM

Dmitry M in Go-go!
Мимо Проходящий
Це грех
Всё грех
источник

МП

Мимо Проходящий... in Go-go!
Не, ну в контекст - это совсем плохо.
источник

ЕО

Евгений Омельченко... in Go-go!
Mark
Какие есть хорошие практики для того чтобы сделать переменную видимую во всем проекте? К примеру переменную с базой данных

Просто глобально определить ее?
Тащить её через все места, где она нужна
источник

DM

Dmitry M in Go-go!
Мимо Проходящий
Не, ну в контекст - это совсем плохо.
Если во время выполнения происходит переключение на другой инстанс БД, то не такой уж и грех. Текущие запросы отработают со старым соединением, входящие с новым
источник

МП

Мимо Проходящий... in Go-go!
Dmitry M
Если во время выполнения происходит переключение на другой инстанс БД, то не такой уж и грех. Текущие запросы отработают со старым соединением, входящие с новым
Имхо в этом случае строго передавать зависимость через интерфейс репозитория чтобы избежать путаницы с контекстом
источник

МП

Мимо Проходящий... in Go-go!
pragus
А видел кто кодген для getters/setters?
Вопрос не ясен.

Я к тому, что в дата-классах геттеры/сеттеры не нужны (актив рекорд - зло), а для структур, в которых есть геттеры и сеттеры, генерить эти методы как-то глупо
источник

МП

Мимо Проходящий... in Go-go!
Max Block
Приветствую!
Просьба подсказать по общепринятым подходам к неймингу в Го.

В питоне у меня был бы модуль user_service и в нем было бы два метода:
1) get_user_by_id(..)->User
2) get_user_by_username(…)->User

В Го следует называть все так:
- Пакет называем просто user
- Методы называем так:
func ById(…) (User, err)
func ByUsername(…) (User, err)

Правильно ли это?
Правильно - сделать гайдлайн с правилами нейминга и строго ему следовать в команде
источник

AS

AlexX S in Go-go!
помогите построить структуру проекта)
источник