любой повторяющийся код содержащий более двух операторов должен быть убран в функцию
А тут у нас уже появилось несколько «если». То есть не любой код. И вот про эти «если» многие в порывах чувств забывают.
Для методов «делаем раз, делаем два» — уже то же написали несколько «если» другие комментаторы. Я могу добавить ещё. Дробление сложного метода на много коротких повышает понимание, ЧТО делает метод. Но к сожалению, часто уменьшается понимание КАК он это делает. В особенности, если итоговая вложенность методов сильно больше двух.
Моя претензия к данной статье именно про то, что вы хоть и написали правильные вещи, но отказываетесь рассматривать или забываете про случаи, когда бездумное следование данным правилам только навредит.
4 пункт — вообще лишний, в данной формулировке. Сто раз обсасывалось.
3 пункт — из крайности в крайность. Стремление сократить копипасту и переиспользовать какой-то однострочник отовсюду — вот лютое зло, ибо плодит зависимости на ровном месте.
1 и 2 пункт — тут всё верно, хотя и банально.
Слишком кричащий заголовок, много восклицательных предложений, транслит вместо нормального русского языка (перфоманс, хип) — текст трудно воспринимается. Не надо так.
Я не java программист и думал, что придумали что то новое, ждал технических подробностей, а в итоге вся статья укладывается в предложение — «в java теперь можно GC, но она будет падать».
Хочу поддаться рекламе и попробовать какой нибудь девайс. Вы вроде человек сведущий, поэтому вопрос к вам. На полезность я пока готов забить, а как насчёт опасности и побочных действий? Совсем не хочется поджарить и так не слишком хорошо работающий мозг.
Как мы боролись за производительность сервера и целиком его переписали c Python на Go, как мы оптимизировали клиент и добавлали туда графические эффекты. Все это мы можем рассказать в будущих наших статьях.
Действительно всё самое интересное пропустили.
А на go нет проблем со сборщиком мусора? Он вроде не особо приспособлен под настоящий реалтайм.
Многие решения в ruby намертво прибиты к рельсам, и иногда действительно трудно найти независимую от rails инфраструктуры библиотеку. Для тех же токенов — есть devise, но он тянет за собой такой фарш, что эффективнее написать свою авторизацию (аккуратно повыдёргивая критичный код из готовых решений).
Опрос:
> Поддерживете ли вы стимулирование перехода на HTTPS
Нет, шифрование это плохо
Зачем такие провокационные варианты ответа, ради очередного холивара? Уже сколько раз везде обсуждали, что https — нужен далеко не на 100% процентов сайтов.
Простите, а где можно почитать критерии контента «достойного внимания взрослого человека»? И почему этот нехороший человек, кто сочинил эти критерии, вдруг взялся решать, что достойно моего внимания, а что нет?
Просто интернет изначально «неправильно» рождён. Вот если бы он сразу развивался не как нечто над и меж государственное, а был бы услугой гарантированной государством каждому гражданину с рождения. Каждый ip адрес должен был бы регистрироваться на паспорт и вноситься в единый реестр государственной компании НэтПром. Каждый владелец «веб ресурса» в свою очередь должен был бы регистрировать свой ip адрес через НэтПром в реестре разрешённых ресурсов. Если ресурса нет в реестре, то НэтПром просто физически не может никому предоставить доступ до этого ip адреса (про данный ip ничего не знает соответствующая железка). Логирование и хранение трафика естественно «by design». Если иностранный ресурс «macro-soft» хочет предоставлять свои веб ресурс третьей стране, то он должен заплатить налог и подать заявку на регистрацию в НэтПром. Но это всё при условии если между НэтПромом и DemocraticNet заключен договор на взаимный пропуск трафика.
Вот тогда бы не было сейчас никаких проблем с VPN, файрволлами и Яровыми. Все проблемы из за неправильной архитектуры.
А в каком формате гоняются данные по именованным каналам? Если свой формат сообщений, то их ещё надо расспарсить. Если сырые данные — то всё равно надо разделять пакеты данных друг от друга, плюс накладные расходы на прочитать из канала и записать себе в процесс.
У вас будут имена вроде controller.UserController, в которых вы дублируете имя пакета в имени типа.
Можно ведь controller.Users?
Опять же, ужасные имена вроде users.User и та же проблема с круговыми зависимостями, когда наш accounts.Controller должен взаимодействовать с users.Controller и наоборот.
С чего вдруг один контроллер должен вдруг взаимодействовать с другим? Такого вообще не должно быть.
Насчет ci вы правы, действительно я тут погорячился. go generate && go build можно положить в условный make.sh. Суть в том, что в любом случае надо постоянно запускать такие инструменты как например go fmt, go test, go vet. К ним добавляется еще go generate при условии использования генераторов.
Возможно в дальнейшем автозапуск go generate добавят например на уровне плагинов, например idea при коммите в vcs предварительно автоматически умеет запускать go fmt.
Запускать можно вручную или через go generate. Забыть запустить генератор можно, но это отчасти решается скриптом вида go generate && go build. Если есть отдельная система сборки/деплоя/ci то генерация прописывается туда наряду например с запуском тестов.
Более подробно разверну свою мысль — в указанной статье описание использование утилиты go generate и обзор возможности кодогенерации. Это хорошая статья, в которой в частности разобрана утилита stringer (именно поэтому я назвал её «эталонной»). Я же решил показать небольшой пример как достаточно просто и быстро написать свой генератор кода на основе разбора ast. В данном случае одно дополняет другое.
А тут у нас уже появилось несколько «если». То есть не любой код. И вот про эти «если» многие в порывах чувств забывают.
Для методов «делаем раз, делаем два» — уже то же написали несколько «если» другие комментаторы. Я могу добавить ещё. Дробление сложного метода на много коротких повышает понимание, ЧТО делает метод. Но к сожалению, часто уменьшается понимание КАК он это делает. В особенности, если итоговая вложенность методов сильно больше двух.
Моя претензия к данной статье именно про то, что вы хоть и написали правильные вещи, но отказываетесь рассматривать или забываете про случаи, когда бездумное следование данным правилам только навредит.
3 пункт — из крайности в крайность. Стремление сократить копипасту и переиспользовать какой-то однострочник отовсюду — вот лютое зло, ибо плодит зависимости на ровном месте.
1 и 2 пункт — тут всё верно, хотя и банально.
Я не java программист и думал, что придумали что то новое, ждал технических подробностей, а в итоге вся статья укладывается в предложение — «в java теперь можно GC, но она будет падать».
Действительно всё самое интересное пропустили.
А на go нет проблем со сборщиком мусора? Он вроде не особо приспособлен под настоящий реалтайм.
> Поддерживете ли вы стимулирование перехода на HTTPS
Нет, шифрование это плохо
Зачем такие провокационные варианты ответа, ради очередного холивара? Уже сколько раз везде обсуждали, что https — нужен далеко не на 100% процентов сайтов.
Вот тогда бы не было сейчас никаких проблем с VPN, файрволлами и Яровыми. Все проблемы из за неправильной архитектуры.
Можно ведь controller.Users?
С чего вдруг один контроллер должен вдруг взаимодействовать с другим? Такого вообще не должно быть.
Возможно в дальнейшем автозапуск go generate добавят например на уровне плагинов, например idea при коммите в vcs предварительно автоматически умеет запускать go fmt.