Хитрости продуктивности Golang, часть 4: встроенные инструменты

вступление

После моего третьего поста об автоматической генерации юнит-тестов этот пост будет о некоторых встроенных инструментах языка golang.

В Go есть множество инструментов для повышения производительности, и, как вы увидите, большинство из них являются инструментами командной строки (CLI). Если вы используете Goland of VS Code, вы можете использовать некоторые плагины для графического использования этих инструментов.

Код автоформатирования

Наличие постоянного форматирования в коде помогает сохранить хорошую читабельность. Это делает код чище и минимизирует энтропию.

Простой способ добиться автоматического форматирования кода — использовать go fmt.

Просто введите следующую команду для автоматического рекурсивного форматирования всех файлов в вашем проекте.

Go fmt ./...

Вот пример плохо отформатированного исходного кода, и после вывода после go fmt.

Инструменты рефакторинга

В Go также есть несколько инструментов рефакторинга, которые помогают нам изменять весь код (например, все вызовы функций). Большинство IDE включает эти инструменты в графическом виде, но вы также можете вызывать их через интерфейс командной строки.

Давайте взглянем на обновленную структуру уведомителя:

А что, если нам нужно изменить функцию notifyUser(), чтобы она называлась notifyOwner(). Мы можем запустить:

gofmt -w -r 'notifyUser -> notifyOwner' .

Мы используем -w, чтобы указать правило перезаписи, и -r, чтобы указать изменение места (непосредственно в нашем исходном файле). Точка в конце указывает, что мы хотим, чтобы это было изменено только на любой файл, который имеет этот шаблон в текущем каталоге.

Мы пока не будем углубляться в эту тему, но это может быть намного сложнее.

Перейти Тест

Скорее всего, вы уже знаете команду go test ./…, если нет, то она просто рекурсивно запускает все модульные тесты.

Но что, если вы хотите провести стресс-тестирование одного модульного теста? (Ака запустить его много раз, чтобы увидеть поведение).

Вы можете сделать это, просто запустив:

go test -run=my_super_test  -count=1000

Это будет выполняться 1000 раз с именем моего модульного теста my_super_test.

Outro

Вот именно для этого. Я оставляю вам ссылку на классную шпаргалку, которая охватывает множество инструментов Golang!

https://github.com/fedir/go-tooling-cheat-sheet/blob/master/go-tooling-cheat-sheet.pdf