злом, и все это прекрасно понимают.
Мы, скажем вынуждены использовать все вот эти var ErrSome = errors.New(...).
Было бы лучше без них (но не потому что это глобальные переменные), но, тем не менее, все мы (ну или большинство) это используем.
Есть глобальные переменные для конфигов.
Не все их используют, есть способы более удобные, но те, кто используют тот же go-swagger, знают, что конфиги (опции запуска) там задаются через глобальную переменную.
Всё это есть.
Никто не пытался сказать, что глобальные переменные — суть зло.
Но когда мы говорим о каких-то зависимостях, когда мы говорим о тестировании, о стабильности разработки и поддержки в хоть сколько-нибудь архитектурно серьёзных продуктах, мы сталкиваемся с тем, что объявленные глобальными переменными зависимости типа коннекта к БД могут создать неудобства.
Могут и не создать. А может для кого-то невозможность замокать тестируемый объект и не является неудобством.
Каждый имеет право на своё независимое мнение. И вы тоже. Странно только, что вы так любите спорить с теми, кто так же как и вы имеет право на мнение, при этом требуя каких-то доказательств и не предоставляя их со своей стороны.
Ваше "за всё время не было проблем" — это же не доказательство. Какое время?
Что за проекты?
Вот мой пример раскритиковали, предложив использовать интерфейс и вообще вынести всё это дело в контроллер. И правильно раскритиковали, потому что в большинстве случаев так действительно будет проще в дальнейшем. Я правда этот пример приводил не как пример окончательного решения, а как пример того, как можно без глобальной переменной. Но это уже моя проблема — нужно было сразу уточнять этот момент.
Видите, всегда можно разговаривать конструктивно, а не гадить на стол в ресторане, выкрикивая "я прав, докажите обратное".
Мимо
> Мы, скажем вынуждены использовать все вот эти var ErrSome = errors.New(...). это не переменная, а квазиконстанта. и она оформлена как переменная только потому, что константы в go убогие
просто в Го нет глобальных переменных
Мой аргумент был в самом начале - меньше кода. Точка. "зависимости типа коннекта к БД могут создать неудобства." - это извините не аргумент. Всё что угодно может создавать неудобство. Что неудобно для вас, то вполне норм для других. А меньше букв - это как бы объективная реальность данная нам в ощущениях. "за всё время не было проблем" - это как раз таки мнение, а не аргумент. У меня много проектов, и все они они имеют для меня и не только для меня кардинальное значение, и финансовое в том числе. Как и у всех. Мы тут делимся оптом в чате, а не обсуждаем у кого проекты показательны, у кого нет. Я же не требую от вас доказать полезность и ценность ваших проетов даже если с чем то у вас не согласен. С чего бы мне вам доказывать ценность и полезность своих?
Обсуждают сегодня