@gogolang

Страница 1552 из 1630
Vasiliy
13.10.2018
14:26:44
=)

Nikolay
13.10.2018
14:26:50
@Enchantner эммм ) a+b то тебе чем не нравится? )
для двух строк норм, но если в цикле - то так себе идея

Danil
13.10.2018
14:27:16
@Enchantner эммм ) a+b то тебе чем не нравится? )
тем что он начинает отводить по одному байту на символ

а на русские нужно 2 байта

Google
Vasiliy
13.10.2018
14:27:40
BenchmarkPlus-8 2000000000 0.29 ns/op 0 B/op 0 allocs/op BenchmarkBuffer-8 20000000 73.6 ns/op 112 B/op 1 allocs/op BenchmarkStringBuilder-8 20000000 58.3 ns/op 24 B/op 2 allocs/op

https://gist.github.com/pixelbender/de80b5daf29d55721715e52b32d7c184

Nikolay
13.10.2018
14:28:50
https://gist.github.com/pixelbender/de80b5daf29d55721715e52b32d7c184
некорректный тест, я про аккумулирование строк в буфере

Vasiliy
13.10.2018
14:29:01
а вопрос видел?

Nikolay
13.10.2018
14:30:00
а вопрос видел?
ну, человек бы не задавал вопрос, если бы у него просто работал плюс, наверное, нет?

давай его и спросим

Pawel
13.10.2018
14:30:39
Но этим же пользуются? Мне на примере моего решения просто сказали, ты не пользуйся, это зло, для меня там достаточно было услышать - норм это или нет в рамках моего решения, и что сделать если не норм и как лучше Кто-то же использует и ансейф, потому что в рамках его задачи это нормально
разница таки есть. unsafe пользуются когда нужен хакерский способ работы с объектами в памяти, а глоб. переменными - в моей практике в основном по не опытности или отсутствии культуры разработки.

Vasiliy
13.10.2018
14:30:43
ну тем не менее мой ответ точнее, без домыслов )

Nikolay
13.10.2018
14:31:11
а еще глобальная переменная + sync.Once - прям стандартный способ реюзания чего угодно

Pawel
13.10.2018
14:33:08
синглтоны в го делаются глобальными переменными
нет. для синглтонов можно легко обойтись без глоб. объектов

Daniel
13.10.2018
14:33:15
а?!

Google
Daniel
13.10.2018
14:33:30
они по определению глобальные объекты

Pawel
13.10.2018
14:36:51
в смысле - без открытых. стейт синглтона в закрытом глоб объекте,да

Nikolay
13.10.2018
14:37:54
если тебе нужно синглтон извне юзать - то какой смысл его во что-то оборачивать?

Daniel
13.10.2018
14:38:21
приватная переменная в пекедже и публичные методы для работы с ней

ну - от модификации защитить

или там проверить параметры перед модификацией

Nick
13.10.2018
14:38:57
Nikolay
13.10.2018
14:38:58
приватная переменная в пекедже и публичные методы для работы с ней
ну это ж не совсем синглтон уже, это реализация геттеров-сеттеров на коленке

Daniel
13.10.2018
14:39:00
или mutex

Nikolay
13.10.2018
14:39:39
Должна быть одна и большая ))
иногда может быть и так)

или mutex
ну, я бы все равно сделал структуру, обернул бы ее методы в мьютексы, а потом инстанс этой структуры сделал бы глобальным объектом

по сути, придя к той же самой ситуации

не?

Vasiliy
13.10.2018
14:41:42
но ты не сможешь его сделать константой - а значит его можно заменить

Nikolay
13.10.2018
14:42:27
но ты не сможешь его сделать константой - а значит его можно заменить
в го 1.x нет общедоступных иммутабельных объектов

в 2.х, может, завезут

Vasiliy
13.10.2018
14:43:47
см binary.BigEndian

Nikolay
13.10.2018
14:45:53
см binary.BigEndian
это глобальный инстанс структуры, что я выше и писал

Google
Nikolay
13.10.2018
14:45:56
в чем пойнт?

Vasiliy
13.10.2018
14:47:17
> нет общедоступных иммутабельных объектов

Vasiliy
13.10.2018
14:47:46
вот выше - есть же

Nikolay
13.10.2018
14:47:50
нет же

это просто структура, у которой нет внутреннего стейта

по сути, неймспейс

Vasiliy
13.10.2018
14:48:34
и это не отрицает его иммутабельности

Nikolay
13.10.2018
14:48:56
отрицает, потому что это не контейнер и не автомат

он не может быть мутабельным или немутабельным

Vasiliy
13.10.2018
14:49:31
?

Nikolay
13.10.2018
14:49:34
это все равно, что сказать, что число 1 в го - иммутабельный объект языка

Нави
13.10.2018
14:52:07
идея такова, переменные в Го все становятся иммутабельными, и ничего делать не надо. единственное правило, использовать только ":=", и не использовать "=" .

Pawel
13.10.2018
14:54:20
ну, я бы все равно сделал структуру, обернул бы ее методы в мьютексы, а потом инстанс этой структуры сделал бы глобальным объектом
а зачем делать инстанс глобальным объектом? чем не устравивает создать в main объект и внедрить его в нужных местах в качестве зависимости?

Vasiliy
13.10.2018
14:55:22
потому что иногда проще и быстрее написать одну строчку вместо трех-пяти

Nikolay
13.10.2018
14:55:49
а зачем делать инстанс глобальным объектом? чем не устравивает создать в main объект и внедрить его в нужных местах в качестве зависимости?
можно и так, но этот объект не будет синглтоном в полном смысле слова, потому что любая из промежуточных стадий может его перезаписать перед отправкой дальше

а смысл именно в том, чтобы никто не могло его подменить

по сути, во многих языках синглтон реализуется классом, который каждый раз при инстанциировании возвращает ссылку на один и тот же экземпляр

Vasiliy
13.10.2018
14:58:01
что малось эгоистично на самом деле )

Google
Nikolay
13.10.2018
14:58:49
ну, по сути, точка доступа для получения экземпляра будет одинаковая везде в коде ?

и это удобно

Pawel
13.10.2018
15:02:26
можно и так, но этот объект не будет синглтоном в полном смысле слова, потому что любая из промежуточных стадий может его перезаписать перед отправкой дальше
чтобы нельзя было перезаписать, объект передаётся по значению, а не по ссылке основной недостаток таких "синглтонов" с глоб. переменными - вызывающий код не контролирует инициализацию. Если ты пишешь "синглтоны" для кого-то, то это неприемлемо в принципе. Если для себя - то просто порядок и сам ход инициализации станвится менее очевидным, а профитов имхо нет.

Нави
13.10.2018
15:04:44
это не сделает структуры иммутабельными
почему, если придерживаться правила использовать только ":=" , то и структуру компилятор не даст изменить: type Circle struct { x, y, r float64 } c := Circle{x: 0, y: 0, r: 5} c := Circle{x: 1, y: 2, r: 6} //- непройдёт второй раз

Pawel
13.10.2018
15:06:15
что значит “не контролирует инициализацию”? ты запросто можешь ее контролировать
не понял, как это я её могу контролировать если глоб переменные инициализируются в порядке подключения пакетов. Это что-то новое. Но даже если как-то по хитрому и могу - зачем? проще же в main проинициализировать все зависимости так как я хочу, зачем извращаться-то?

Nikolay
13.10.2018
15:07:49
а зачем - потому что так реально проще, чем прокидывать кучу непойми чего во все функции вместо того, чтобы просто импортнуть поле из модуля

Pawel
13.10.2018
15:15:13
ну тогда должна быть функция GetOldShit(), по которой другие получаю то, что было создано с помощью NewShit. И тут возникают вопрос 1) как понять был ли shit инициализирован и 2) что делать если не был. Все ответы, которые я слвышал и которые ты мне наверняка дашь, мне не нравится, поэтому я глоб. переменные не юзаю сам и выпиливаю у других в code review

Pawel
13.10.2018
15:17:51
а зачем - потому что так реально проще, чем прокидывать кучу непойми чего во все функции вместо того, чтобы просто импортнуть поле из модуля
на счёт проще - с тобой практически ни кто не согласится из признанных экмпертов и авторов книг, потому что оно реально увеличивает связность частей программы и делает код менее очевидным.

Pavel
13.10.2018
15:22:11
Причина не делать так — дешевая разработка.

А дорогая часто не нужна.

Потому что не имеет смысла.

Nikolay
13.10.2018
15:23:16
Почему тут все думают что на го пилят только прошивку для ракет?
Главное - не начинать оправдывать этим эпичный говнокод

Google
Pavel
13.10.2018
15:23:24
Говнокод збс

Особенно если написал и забыл

У него есть ситуации когда он — лучший твой друг

Перфекционизм — вот это ебаный пиздец, господа ?

Nikolay
13.10.2018
15:26:12
Ну тогда ты не разработчик, ты макака

Pavel
13.10.2018
15:26:29
Высококвалифицированная макака

Nikolay
13.10.2018
15:26:46
Высококвалифицированная макака
Только если знаешь, как надо на самом деле

А не Даннинг-Крюгер

Второе гораздо чаще

Pavel
13.10.2018
15:28:25
Лучше завышенная самооценка, чем заниженная

Мерлин
13.10.2018
15:29:48
Я предлагаю завершить эту невероятно продуктивную дискуссию

Pawel
13.10.2018
15:35:27
кстати хотелось бы пример полезного с практической т.з. глобального объекта, для которого не имеет значения порядок инициализации. мне вот так сразу в голову не приходит

Pavel
13.10.2018
15:35:56
Логгер

Pawel
13.10.2018
16:03:42
только если он stdout. А что-то менее тривиальное есть?

Marlik
13.10.2018
16:04:24
Потому что it это не про it. it это про решение бизнесзадач лишь бы работало, посредством дешевой раб. силы, которая приходит в it за зарплатой, и чтобы не на завод. А потом на всяких фронтенд конфах ебут друг друга в жопу, кто круче фреймворк освойл. ФРЕЙМВОРК, КАРЛ! В it ценится умение решать инфраструктурные задачи. Если ты умеешь webpack'ом файлики конкатенировать или запускать всесь свой говнокод со всеви зависимостями из говна в изолированном окружении (да-да, я на тебя смотрю, мамкин девопс инженер), то это типа збс. Вот по этому мы и живём с монолитными говнобраузерами на оверлям строк кода, с сайтиками которые ждут по 250мб и 25% цпу. По этому, у нас есть говно-конференции, где невъебенные докладчики читают о том, как блеать повысить эффективность работы сайтика. Эффективность, блеать! Сайтика, блеать!!!! Вот потому, что для разработки, тонкого клиента + ui к базе юзерского контента у нас спрашивают по СТЕК ДЛЯ ФРОНТЕНДА, БЛЕАТЬ! И на бекенде то же дерьмо творится. Привет жаве с её жвмом и шарпу. Для примитивнейшей логики заводят целые проекты на спринге.
Ахах)) Оценил, спасибо.

Alexander
13.10.2018
16:12:08
Pavel
13.10.2018
16:13:00
Для кого лучше?
Для человека.

anatolii
13.10.2018
16:14:16
Для человека.
Спорно, при заниженой пытаешься возобновить недостаток, при завышеной ты уже все знаешь и тебе ниче не надо

Pavel
13.10.2018
16:15:18
Спорно, при заниженой пытаешься возобновить недостаток, при завышеной ты уже все знаешь и тебе ниче не надо
Спорно, человек с заниженной самооценкой может быть занят решением других проблем, а не самообразованием.

Daniel
13.10.2018
16:15:35
коллеги

Страница 1552 из 1630