Путь Golang
407 subscribers
16 photos
2 files
37 links
Всё о Golang

Ресурсы и материалы: https://t.iss.one/waygolang/12

Кроме чата, Golang обсудить можно тут: https://t.iss.one/gogolang
Download Telegram
#go #guide #google Google выпустил руководство по стилю написания кода на Golang. В Google:
https://google.github.io/styleguide/go/index

👉 Это три документа: общее руководство по стилю, расширенное руководство по каким-то конкретным темам и практики.

👉 Да, есть мнение, что это руководство «нормально делай — нормально будет» (c) Подольский. Документ действительно максимально насыщен и лаконичен. Выжимки делать трудно. Однако, почему-то заметное большинство коллег нормально не делает. А монструозное руководство с разжевыванием от Uber даже я не осилил: https://github.com/uber-go/guide/blob/master/style.md

☝️ Основные принципы стиля:
Читаемость. Это ПЕРВОЕ правило стиля
Простота
Лаконичность
Поддерживаемость
Согласованность

Читаемость. Код должен быть ясен для любого читающего. Два аспекта:
- Что код на самом деле делает?
• задавайте смысловые имена переменным;
• добавляйте дополнительные комментарии;
• разбивайте пробелами код и комментарии;
• раскладывайте код по разным функциям для модульности.
- Почему код делает то, что должен? Общий смысл в том, что понимание кода должно быть по мере чтения.
Приведен интересный на мой взгляд пример — функция strings.Cut, которая состоит из 4-ёх строк кода, но повышает в разы читаемость.

Простота
• код должен просто читаться сверху вниз;
• код не должен подразумевать, что читающий знает, что код делает;
• код не должен подразумевать, что читающий может запомнить весь предыдущий код;
• код не должен содержать не необходимых уровней абстракции;
• имена не должны отвлекать;
• все решения должны быть понятны читающему;
• комментарии должны описывать «почему», а не «что»;
• документация должна быть самодостаточной;
• код должен содержать понятные тестируемые ошибки;
• простой код часто противоречит «умному»;
• старайтесь использовать базовые конструкции языка (слайсы, мапы, структуры);
• если функция есть в стандартной библиотеке — используйте её;
• старайтесь использовать код Google.

Лаконичность
Приводится пример if err := doSomething(); err != nil { как пример лаконичного кода.

Поддерживаемость
Приводятся примеры всякого булшита, вроде игры областями видимости переменных или ! в середине выражения, которое конечно же пропускается при визуальном осмотре.

Согласованность
В целом, это про единообразие кода в рамках функции, файла, пакета, команды разработки, кодовой базы.

☝️ Руководство по стилю не заменяет effective Go https://go.dev/doc/effective_go , но расширяет его. «Не думайте, что Я пришел нарушить закон или пророков: не нарушить пришел Я, но исполнить.» (Мф. 5:17).

🫵 Стиль — это конёк golang на мой взгляд. Практики, руководства по практикам и стилям, доклады по практикам и стилям — всё в наших руках.
👍3