📍 5 способов писать эффективный код на Go: от названий переменных до архитектуры
Эффективная разработка — это далеко не всегда про планирование спринтов и оценку задач. Часто эффективность написания кода зависит от процессов, налаженных инженерами и руководителями команд. В каждом языке программирования есть свои приёмы, используя которые можно писать код более продуктивно.
В новом материале эксперты компании YADRO — руководитель группы разработки подсистем Геннадий Ковалёв и эксперт по разработке ПО Даниил Подольский — обсудили способы повысить эффективность написания кода в команде Go-разработчиков. Авторы уверены, что ультимативный синтаксис и чистая архитектура помогают командам быстрее и слаженнее решать задачи, и доказывают это на практических примерах.
Из статьи вы узнаете:
▪ Что такое эффективный код с точки зрения менеджера, разработчика и стороннего пользователя:
▪ Как линтеры повышают читабельность кода;
▪ Важен ли нейминг переменных в Go;
▪ В каких случаях необходима документация к коду;
▪ Каким правилам работы с архитектурой следуют авторы.
Некоторые тезисы дискуссионные — например, авторы по-разному относятся к вопросу нейминга переменных и комментариям в коде. Возможно, у вас есть альтернативное мнение и иные практики повышения эффективности разработки. Расскажите, каких правил придерживаетесь вы?
Читать статью➡
#программы #языкипрограммирования #go
Эффективная разработка — это далеко не всегда про планирование спринтов и оценку задач. Часто эффективность написания кода зависит от процессов, налаженных инженерами и руководителями команд. В каждом языке программирования есть свои приёмы, используя которые можно писать код более продуктивно.
В новом материале эксперты компании YADRO — руководитель группы разработки подсистем Геннадий Ковалёв и эксперт по разработке ПО Даниил Подольский — обсудили способы повысить эффективность написания кода в команде Go-разработчиков. Авторы уверены, что ультимативный синтаксис и чистая архитектура помогают командам быстрее и слаженнее решать задачи, и доказывают это на практических примерах.
Из статьи вы узнаете:
Некоторые тезисы дискуссионные — например, авторы по-разному относятся к вопросу нейминга переменных и комментариям в коде. Возможно, у вас есть альтернативное мнение и иные практики повышения эффективности разработки. Расскажите, каких правил придерживаетесь вы?
Читать статью
#программы #языкипрограммирования #go
Please open Telegram to view this post
VIEW IN TELEGRAM
Система хранения данных — сложное устройство, и, если при работе произошла ошибка, оно должно своевременно и понятно сообщать об этом пользователю. В большинстве веб-сервисов для этого используют баннер с надписью «Что-то пошло не так», но такой способ уведомления не отражает суть ошибки, а в его основе — сложный код, с которым неудобно работать инженеру.
Александр Лырчиков, старший инженер по разработке ПО в YADRO, рассказывает, как он и его команда искали оптимальное решение для обработки ошибок на Go, которое подойдёт для пользователя, программиста и машины, и почему написали собственный инструмент — Terror, сокращение от tatlin-error. Из материала вы узнаете:
Александр подробно описал реализацию решения и оставил инструкции для тех, кто захочет создать аналог Terror в собственном проекте.
Читать статью
#программы #go #системыхраненияданных
Please open Telegram to view this post
VIEW IN TELEGRAM
🎤 Первый в сезоне митап по Go в Санкт-Петербурге: построим PaaS без хардкода и научимся отлаживать приложение в проде
25 сентября пройдёт митап по разработке на Go, на котором выступят инженеры из YADRO и Avito.Tech. Встреча состоится в «Петроконгрессе», а участники из других городов смогут присоединиться к онлайн-трансляции. Регистрируйтесь, чтобы забронировать место на площадке или получить ссылку на стрим на одной из трёх платформ.
Митап откроет Даниил Подольский, эксперт по разработке ПО, глава программного комитета GolangConf и активист Go Spb. Кто выступит на встрече:
▪ Артемий Андрианов, Go-разработчик в платформенной команде Common YADRO Platform, расскажет, как делал безопасную «песочницу» для настройки параметров платформенного сервиса с помощью CEL;
▪ Богдан Бондаренко, Go-разработчик в телеком-направлении в YADRO, объяснит, как Ginkgo и Gomega упрощают написание тестов и делают их выразительнее;
▪ Павел Агалецкий, ведущий инженер в AvitoTech, поделится подходами, которые помогут с отладкой, когда приложение уже в проде.
Онлайн-участники смогут задавать вопросы спикерам в комментариях к трансляции. Для офлайн-гостей подготовили демозону с «железом» для ЦОД и телеком-операторов, код для которого пишут Go-разработчики из YADRO, а также выставку open source-инструментов из сообщества Go SPB.
Зарегистрироваться на митап➡
#программы #go #ивент
25 сентября пройдёт митап по разработке на Go, на котором выступят инженеры из YADRO и Avito.Tech. Встреча состоится в «Петроконгрессе», а участники из других городов смогут присоединиться к онлайн-трансляции. Регистрируйтесь, чтобы забронировать место на площадке или получить ссылку на стрим на одной из трёх платформ.
Митап откроет Даниил Подольский, эксперт по разработке ПО, глава программного комитета GolangConf и активист Go Spb. Кто выступит на встрече:
Онлайн-участники смогут задавать вопросы спикерам в комментариях к трансляции. Для офлайн-гостей подготовили демозону с «железом» для ЦОД и телеком-операторов, код для которого пишут Go-разработчики из YADRO, а также выставку open source-инструментов из сообщества Go SPB.
Зарегистрироваться на митап
#программы #go #ивент
Please open Telegram to view this post
VIEW IN TELEGRAM
📄 Упражнения для хорошей памяти: три способа оптимизировать работу с памятью на Go с помощью memory pools
Когда программа испытывает пиковую нагрузку, она потребляет много памяти. В языке Go это «замечает» Garbage Collector, останавливает программу и освобождает память. Сервис делает свою работу, но она влияет на эффективность программы, поэтому часто возникает необходимость снизить нагрузку на GC.
Go-разработчик в YADRO Александр Иванов столкнулся с проблемой: когда по сети приходило много данных, GC фиксировал пиковое потребление памяти, останавливал программу, освобождал память и продолжал выполнять программу.
Это влияло на эффективность работы, поэтому инженер решил уменьшить количество потребляемой памяти в моменты пиковой нагрузки и протестировал несколько способов, как это сделать. В этом материале он собрал результаты поисков и рассказал, для каких проектов подойдёт та или иная реализация memory pool. Вы узнаете:
▪ О принципах, по которым язык Go работает с памятью;
▪ Как завести Channel Pool, поместить память в sync.Pool или создать memory arena;
▪ Какие бенчмарки получились у каждого решения по итогам тестов;
▪ Что стоит учесть в разработке memory pool для вашего проекта и как выбрать подходящую реализацию;
▪ Какая реализация в итоге помогла решить проблему с пиковыми нагрузками.
В конце статьи найдёте ссылку на репозиторий с кодом, где автор сравнивает разные memory pools.
Читать статью➡
#программы #go
Когда программа испытывает пиковую нагрузку, она потребляет много памяти. В языке Go это «замечает» Garbage Collector, останавливает программу и освобождает память. Сервис делает свою работу, но она влияет на эффективность программы, поэтому часто возникает необходимость снизить нагрузку на GC.
Go-разработчик в YADRO Александр Иванов столкнулся с проблемой: когда по сети приходило много данных, GC фиксировал пиковое потребление памяти, останавливал программу, освобождал память и продолжал выполнять программу.
Это влияло на эффективность работы, поэтому инженер решил уменьшить количество потребляемой памяти в моменты пиковой нагрузки и протестировал несколько способов, как это сделать. В этом материале он собрал результаты поисков и рассказал, для каких проектов подойдёт та или иная реализация memory pool. Вы узнаете:
В конце статьи найдёте ссылку на репозиторий с кодом, где автор сравнивает разные memory pools.
Читать статью
#программы #go
Please open Telegram to view this post
VIEW IN TELEGRAM
12 декабря в 18:00 в нижегородском отеле AZIMUT начнётся заключительный в этом году митап YADRO. К экспертам компании присоединятся спикеры из Ви.Tech, Wildberries и активные участники программного комитета GolangConf.
Откроют митап ведущий инженер по разработке ПО в YADRO Руслан Барсуков и технический менеджер Wildberries Виталий Левченко. Они расскажут о планах развития Go-сообщества в Нижнем Новгороде. На смену им придут эксперты с тематическими докладами:
Офлайн-гости смогут познакомиться с решениями YADRO для дата-центров и телеком-операторов, поучаствовать в технических интерактивах и получить призы от компании. А те, кто не доедет до Нижнего, — задать вопросы спикерам в чате онлайн-трансляции.
Зарегистрироваться на митап
Для тех, кто хочет больше узнать о Go прямо сейчас, подготовили подборку статей «Истового инженера»:
#программы #go #митап
@ultimate_engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
Истовый инженер
YADRO Go meetup (Нижний Новгород)
Собираем проект на Go, пилим монолит без использования микросервисов, пишем свой плагин для Redpanda/Connect и генерируем стабы для тестирования микросервисов
13 марта приглашаем на митап для гоферов: обсудим изменения в Go 1.24 и их влияние на разработку, разберём сложные темы конкурентности в языке и пакета unsafe.
Что в программе
Где и когда
Митап пройдёт 13 марта в Москве в Loft Megapolis Hall (Варшавское ш., 33, стр. 12). Начало в 19:00, сбор гостей — с 18:00. Сейчас можно присоединиться к онлайн-трансляции: зарегистрируйтесь, чтобы получить ссылку.
Зарегистрироваться на митап
Если вы хотите узнать больше о Go прямо сейчас, читайте статьи «Истового инженера»:
→ 5 способов писать эффективный код на Go;
→ Простые правила, которые помогают писать на Go без побочных эффектов;
→ Три способа оптимизировать работу с памятью на Go с помощью memory pools;
→ Строим пул потоков на С и Go.
#программы #go #митап
@ultimate_engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
Истовый инженер
YADRO Go Meetup (Москва)
13 марта в Москве и онлайн мы обсудим: альтернативы мьютексам, опасный unsafe и Go 1.24.
📖 Пополняем список полезных источников: что почитать и посмотреть про конкурентность в Go
Разработчики на Go часто слышат, что конкурентный код в этом языке создаётся легко и «почти бесплатно» — достаточно добавить go перед вызовом функции. Но удобство может быть обманчивым: без грамотного управления синхронизацией и каналами система рискует превратиться в хаос. Чтобы этого избежать, важно изучить проверенные статьи и книги про механизм конкурентности.
Владислав Белогрудов, эксперт по разработке ПО в YADRO, собрал такие материалы в одной статье. В ней — ресурсы, которые помогут разобраться, как в Go работать с горутинами и каналами без хаоса и дедлоков.
Из статьи вы узнаете:
▪ Почему конкурентность — это не параллелизм и как избежать распространённых ошибок;
▪ Как управлять синхронизацией и обработкой ошибок в конкурентных программах;
▪ Каким образом можно эффективно использовать горутины, каналы и паттерны конкурентности.
Читать➡
#go #языкипрограммирования
@ultimate_engineer
Разработчики на Go часто слышат, что конкурентный код в этом языке создаётся легко и «почти бесплатно» — достаточно добавить go перед вызовом функции. Но удобство может быть обманчивым: без грамотного управления синхронизацией и каналами система рискует превратиться в хаос. Чтобы этого избежать, важно изучить проверенные статьи и книги про механизм конкурентности.
Владислав Белогрудов, эксперт по разработке ПО в YADRO, собрал такие материалы в одной статье. В ней — ресурсы, которые помогут разобраться, как в Go работать с горутинами и каналами без хаоса и дедлоков.
Из статьи вы узнаете:
Читать
#go #языкипрограммирования
@ultimate_engineer
Please open Telegram to view this post
VIEW IN TELEGRAM