[БЕЗ_ЗВУКА] В этом видео мы рассмотрим, какие еще инструменты Go предоставляет для того, чтобы ваш код был красивым и поддерживаемым. Начнем с инструмента, который называется go vet. Если вы пользуетесь Visual Studio Code, то у него сразу много инструментов есть из коробки, и вы могли видеть в своем коде довольно много подчеркиваний зеленых, красных. Каким образом они получаются? Какой инструмент генерирует такого рода подсказки? Рассмотрим этот код. Тут вроде бы не так много кодов, вроде бы ошибок нет. Он даже компилируется, я проверял. Однако подсветки, что есть какая-то ошибка, пусть даже зеленые, все равно есть. Давайте запустим встроенный инструмент, который называется go vet, и посмотрим, на какие ошибки он ругается. Итак, go vet и наш файл — vet_example.go. Обратите внимание, у нас небольшой файл, но тем не менее я умудрился сделать в нем три ошибки. Первая — на 9-й строчке результат не использован. То есть я тут просто вызвал функцию, но никуда не присвоил этот результат и не вывел его. Очевидно, что ошибка в том, что я хотел здесь написать return. Return. Вторая ошибка — не указана опция форматирования в Printf. Printf — это все-таки форматированный ввод, то есть я там должен указать какие-то переменные, чтобы вызвать. У меня здесь никаких нет. При этом я какие-то переменные туда передал. Вот он именно на это и ругается. Давайте добавим. Стало хорошо, уже лучше. И еще он ругается на то, что пропущен аргумент — в Printf ожидается два, а передается всего лишь один. То есть для этой переменной я ничего не передаю. Давайте это исправим. Result. Теперь стало гораздо лучше. Запустим еще раз. И теперь у меня никаких ошибок не возникает. То есть go vet — это встроенный в Go инструмент, который позволяет находить такие простые ошибки. То есть это инструмент статического анализа. Он не копает очень глубоко, но всякую мелочь он при этом замечает. Что делать, если хочется больше ошибок? Рассмотрим второй код. Тут уже гораздо больше подсвечено. Запустим на него второй инструмент, который мы рассмотрим. Называется gometalinter. Gometalinter metalinter_example.go. И поехали. Целый экран ошибок. На коде в 24 строчки у меня целый экран ошибок. Почему? Что это за инструмент? Какие параметры он смотрит? Gometalinter — это инструмент, который объединяет в себе другие статические анализаторы. Вот список линтеров, которые в нем поддерживаются, то есть довольно внушительный список. Я не буду останавливаться на каждом. Расскажу про те ошибки, которые у меня есть. Итак, во-первых, он говорит, что, если вы делаете экспортируемые структуры и, вообще, экспортируемые функции, переменные, константы, то будьте добры, напишите, пожалуйста, комментарий к ним — зачем, зачем эта структура нужна, что она делает, что эта функция возвращает. Дело в том, что документация в Go как раз строится по этим комментариям. И если у вас будет строго написание с этим, то все будет хорошо. Давайте добавим. [БЕЗ_ЗВУКА] Gometalinter example. Хорошо. Далее, не используйте underscore в именах переменных Go. Дело в том, что в Go принят стиль CamelCase, то есть не используется символ подчеркивания. И он даже подсказывает, что user_id, должен быть, на самом деле, userID. То есть вот так — ID. Хорошо. Смотрим дальше. Он следит за тем, чтобы всякие общего рода сокращения были записаны в верхнем регистре. Например, Json чтобы был тоже в верхнем регистре. Исправим. JSON. Далее, опять просят ввести комментарий к функции. И он сразу же ругается на underscore, поэтому я напишу и поправлю и underscore. As example. Посмотрим. Стало меньше. Окей. isOk. Опять функция Test должна иметь комментарий. Test used as example. Теперь у меня нет функции Test_error, а is_ok должен быть isOK. Так, посмотрим, что дальше. Результат Printf нигде не использован. Это go vet ругается. Нет форматирования. Это то, что мы уже поправили. И еще одна строчка на go vet. Так, isOK добавляем сюда. Пишем return. У нас уже половина кода зеленого. Тут написано Test. Я не обрабатываю ошибку, то есть он даже следит за тем, обрабатывается ли ошибка, идет ли if следом за этим случаем. Не равно nil. Result. Опция форматирования и еще что-то. Теперь наш код наконец-таки стал зеленым полностью. Давайте запустим еще раз. К сожалению, неиспользуемый код я уже проверять, удалять здесь не буду. Но тем не менее, смотрите, какой объем вроде бы незначительных вещей нашел этот инструмент. Если прикрутить его в очень жестких параметрах, сразу объявить тиранию на get push, либо же в ваш инструмент для непрерывной интеграции и не разрешать коммитить даже с кодом, который не проходит те проверки, которые вы выбрали, то поначалу будет тяжело, но через какое-то время ваш код будет полностью документирован, вы будете автоматически находить мелкие ошибки. И в целом поддерживаемость очень увеличится. Я очень рекомендую вам начинать, собственно, разработку в Go с того, чтобы вкрутить этот инструмент и всегда соблюдать те требования, которые он говорит. Может быть, не все, может быть, какие-то опции вам покажутся слишком жесткими. Но, например, писать комментарий и обрабатывать все ошибки и чтобы он не ругался на underscore — это считается очень хорошей практикой.