Форматирование кода и gofmt
Код, написанный в одном стиле, удобно и приятно читать. Сравните сами:
Плохо отформатированный код:
Хорошо отформатированный код:
В разных языках вопрос с форматированием решается по-разному. Например, в Python есть официальный стандарт PEP 8, а в C++ — несколько популярных стилей.
Note
Go решает этот вопрос необычным образом: весь код должен быть отформатирован стандартной утилитой gofmt или её расширенной версией goimports. Утилита
goimports
делает то же самое, что иgofmt
, но ещё автоматически оптимизирует и сортирует импорты.
Такая утилита позволяет не запоминать, что нужно использовать при выравнивании кода — табы или пробелы, сколько оставлять пустых строк между двумя соседними функциями и прочие мелочи, с которыми машины справляются гораздо лучше людей. Пользуйтесь ею перед публикацией всех своих пакетов — и другие программисты скажут вам спасибо.
Форматирование — далеко не единственное, что определяет качество кода. Разработчики по невнимательности могут употреблять конструкции вроде a = append(a,)
или fmt.Printf("Here must be number %d")
. В этом случае могут помочь линтеры.
Линтеры и go vet
В экосистеме Go наиболее распространённый линтер — vet.
В отличие от форматера кода gofmt
, линтер не даёт стопроцентной гарантии правильности своей работы — могут быть ложноположительные и ложноотрицательные срабатывания. Скорее всего, придётся немного поколдовать с настройками, прежде чем линтер начнёт корректно работать в каждом проекте. Манипуляции с настройкой и подключением линтера к системам CI/CD окупят себя, когда вы сэкономите время на этапе код-ревью.
Документация и godoc
В экосистеме Go есть стандартная утилита для создания документации на основе комментариев в коде — это godoc. Запустите go install golang.org/x/tools/...@latest
, чтобы установить все пакеты и утилиты golang.org/x/tools
, в том числе godoc
.
Документация к любой сущности (функции, структуре, переменной или пакету) — это комментарий, который предшествует декларации этой сущности. Например:
На основе таких комментариев godoc
может сгенерировать документацию в формате HTML, man pages
и т. д.
Документирование публичного API разрабатываемых пакетов позволяет сторонним разработчикам получить ответы на вопросы относительно функционала без чтения исходников. Документируйте свои пакеты — и жизнь пользователей станет лучше.
Тестирование кода
Как известно, код без тестов по определению сломан. Поэтому тестирование кода — обязательная часть разработки.
📂 Go | Последнее изменение: 23.08.2024 09:47