Size: a a a

2020 April 29

A

Aikidos in Go-go!
Vladislav
контекст всегда передается в функцию первым аргументом
Можно не передавать, если нет нужды. Можно передавать.
Тут ещё кэширование. Поэтому контекст часто просто будет игнорироваться.
источник

A

Aikidos in Go-go!
Будем передавать другой контекст, а данные изменяться не будут.
источник

R

Rochfort in Go-go!
Надо тогда кеширование на основе контекста делать
источник

A

Aikidos in Go-go!
Rochfort
Надо тогда кеширование на основе контекста делать
Если в этом есть необходимость. Мы же ничего не знаем о том, как этот калькулятор будет использоваться и что он из себя представляет на самом деле.
Может он будет создаваться на каждый новый контекст и так удобней его использовать.
источник

x

x-foby in Go-go!
Vladislav
контекст всегда передается в функцию первым аргументом
Мне вот больше не ясно, почему вы с контекстом объект создаёте?
Обычно контекст передаётся непосредственно в метод, а не в конструктор.
Зачем он вам в самом объекте?
источник

NG

Nikita Gritsai in Go-go!
Это правильный вариант. Первый параметр это строка с URL, а второй url.Values обьявленый выше.
источник

E

Edgar in Go-go!
Vladislav
можно попробовать
(я хотел избежать calculate(ctx, db, data1, data2, data3, …) и сделать, по крайней мере, `calculate(data1, data2, data3, …)`).
Потому и спрсоил, если это плорхо, то надо будет исправить
Приходит такой программист новый, видит твой метод, видит, что параметров нет, у твоего объекта есть map содержащий опять некие значения, а теперь вопрос, как мне понять, как вызвать этот метод? Какие параметры? Что ему нужно? Залезть внутрь метода?
источник

E

Edgar in Go-go!
Что было бы если параметры были бы классические? Этот некий программист понял бы, что ему нужно передать туда?
источник

AK

Anton Kucherov in Go-go!
Vladislav
у меня тут спор с коллегой произошел. Скажите, это нормально хранить контекст, БД, клиенты и вообще разные структуры внутри для исполнения сложных расчетов?
Цель - не перегружать методы бесконечным набором параметров, потому это все хранится внутри. С его слов это антипаттерн, я не согласен
Это выглядит примерно так:

https://goplay.space/#NfjEAbSiKJ2
Хранить БД, Клиенты и другие сервисы в полях структуры imho  норм. Контекст отдельная история, его лучше сразу создать и тут же в функцию передавать явно. Если ваш коллега всегда всё передает аргументами, он просто пишет классический процедурный Си код. Флаг ему в руки конечно.
источник

М

МишанЯ in Go-go!
Пишу код, в конструкции if else глаз сломаешь. Плюнул, пошел спать.🤔
источник

E

Edgar in Go-go!
Anton Kucherov
Хранить БД, Клиенты и другие сервисы в полях структуры imho  норм. Контекст отдельная история, его лучше сразу создать и тут же в функцию передавать явно. Если ваш коллега всегда всё передает аргументами, он просто пишет классический процедурный Си код. Флаг ему в руки конечно.
Хранить в полях структуры норм, но он же говорит о создании логики методов, которые берут значения для запросов из ресивера метода
источник

AK

Anton Kucherov in Go-go!
Edgar
Хранить в полях структуры норм, но он же говорит о создании логики методов, которые берут значения для запросов из ресивера метода
Ну методы на то и методы чтобы брать поля структуры и что то с этими полями делать. Разве нет? Другой вопрос, что именно класть в поля структуры а что не стоит, это уже от ситуации зависит и от того что из себя представляет ваша структура.
источник

E

Edgar in Go-go!
Смотри, мой вариант такой

func (r *Reciver) GetObj(ctx, data1, data2) (*Res,error) {
       r.db ....
}

то есть хранить подключение к БД там, да, это логично, так как мы делаем некую обертку

а он предлагает

func (r *Reciver) GetObj() (*Res, error) {
}
источник

E

Edgar in Go-go!
То есть он хочет даже параметры запроса держать в структуре
источник

E

Edgar in Go-go!
Это лишь в дальнейшем создаст проблемы при расширении, если на этот объект навешать иные методы, сколько тогда полей для параметров уже появится?
источник

E

Edgar in Go-go!
(В начале опечатался в первом сообщении, исправил)
источник

AK

Anton Kucherov in Go-go!
А тут вопрос:
- Правда ли data1, data2 параметры нужно ли их раскрывать?
- Как r используется? 1 экземпляр на все запросы или свой на каждый?
источник

AK

Anton Kucherov in Go-go!
Пример какой то over abstract если честно
источник

E

Edgar in Go-go!
Он предлагает один экземпляр

Если бы это был бы неким объектом для запросов и создавался бы каждый раз, когда нужно, вопросов бы не было (было бы, но я бы не влез, так как тут уже другие будут спорить)

А если он делает обертку для БД, то это просто превратится в кашу
источник

DP

Daniel Podolsky in Go-go!
сиглтон - плохой паттерн, плохой.

трудно тестировать, трудно развивать, если он сложный.
источник