Будьте последовательны.
Согласованный код легче поддерживать, его легче рационализировать, он требует меньше когнитивных затрат и его легче переносить или обновлять по мере появления новых соглашений или исправления классов ошибок.
И наоборот, наличие нескольких несопоставимых или конфликтующих стилей в одной кодовой базе вызывает накладные расходы на обслуживание, неопределенность и когнитивный диссонанс, которые могут напрямую способствовать снижению скорости, болезненным проверкам кода и ошибкам.
При применении этих рекомендаций к базе кода рекомендуется вносить изменения на уровне пакета (или более высокого уровня): приложение на уровне подпакета нарушает указанную выше проблему, вводя несколько стилей в один и тот же код.
Группировать похожие объявления
Go поддерживает группировку похожих объявлений.
Менее удачный вариант:
import "a"
import "b"
Более удачный вариант:
import (
"a"
"b"
)
Это также относится к объявлениям констант, переменных и типов.
Менее удачный вариант:
const a = 1
const b = 2
var a = 1
var b = 2
type Area float64
type Volume float64
Более удачный вариант:
const (
a = 1
b = 2
)
var (
a = 1
b = 2
)
type (
Area float64
Volume float64
)
Только объявления, относящиеся к группе. Не группируйте объявления, которые не связаны между собой.
Менее удачный вариант:
type Operation int
const (
Add Operation = iota + 1
Subtract
Multiply
ENV_VAR = "MY_ENV"
)
Более удачный вариант:
type Operation int
const (
Add Operation = iota + 1
Subtract
Multiply
)
const ENV_VAR = "MY_ENV"
Группы не ограничены в том, где их можно использовать. Например, вы можете использовать их внутри функций.
Менее удачный вариант:
func f() string {
var red = color.New(0xff0000)
var green = color.New(0x00ff00)
var blue = color.New(0x0000ff)
...
}
Более удачный вариант:
func f() string {
var (
red = color.New(0xff0000)
green = color.New(0x00ff00)
blue = color.New(0x0000ff)
)
...
}
Читайте также:
- Go style guides: производительность, указание емкости контейнера
- Go style guides: избегайте встраивания типов в общедоступные структуры
- Go style guides: избегайте использования init()
Комментариев нет:
Отправить комментарий