Напишите лучший код Golang, указав имена полей при инициализации структур
Есть отличное руководство по стилю Go от Uber, в котором описаны все, что можно и чего нельзя делать при написании кода Golang в компании, и оно может быть полезным ресурсом, когда вы и / или ваша команда также пишете на Go.
Одна из тех вещей, которые, на мой взгляд, полезны - это указывать имена полей при инициализации структур.
Как именно это выглядит?
Когда вы инициализируете структуры, вы не обязаны указывать имена полей. Это может выглядеть так:
c := Car{"Toyota", "Camry", 2018, true}
Теперь мы можем как бы догадываться, что это за поля, если мы знаем об автомобилях, но это может быть немного расплывчато, когда внутренние детали не очень ясны. Это может относиться не только к авторам и разработчикам кода, но и особенно к новым разработчикам, которые сталкиваются с кодом.
Кроме того, что именно там означает true
? На самом деле не имеет значения, как много вы знаете об автомобилях - все, что имеется в виду, очень непонятно.
Таким образом, Uber предлагает в своем руководстве по стилю указать имена полей:
c := Car {
Make: "Toyota",
Model: "Camry",
Year: 2018,
Available: true
}
Таким образом, становится ясно, что именно вы инициализируете в структуре.
Между прочим, в руководстве по стилю Uber Go упоминается go vet: «Теперь это соблюдается».
Для пакета Go package cmd есть дополнительная документация:Vet изучает исходный код Go и сообщает о подозрительных конструкциях, таких как вызовы Printf, аргументы которых не совпадают со строкой формата. Vet использует эвристику, которая не гарантирует, что все отчеты являются подлинными проблемами, но может находить ошибки, не обнаруженные компиляторами.
Vet обычно вызывается командой go. Эта команда проверяет пакет в текущем каталоге:
go vet
Но в любом случае, просто не забудьте указать эти имена полей, и все будет хорошо!