Бесят три типа переменных:
1)
double negative (Двойное/обратное отрицание).Примеры:
- https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-k8s-stack/values.yaml#L39
operator:
disable_prometheus_converter: false
- https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-operator/values.yaml#L224
operator:
enable_converter_ownership: true
Так сказать лучи негодования команде VM @VictoriaMetrics_ru1.
2)
unintuitive / non-descriptive names (Неочевидные имена)Пример:
- https://github.com/Terraform-VMWare-Modules/terraform-vsphere-vm/blob/master/examples/example-vmname.tf#L65
module "example-server-fqdnvmname" {
...
fqdnvmname = trueПо имени ожидаешь строку с FQDN, а это флаг "создавать имя как FQDN" 🐒
https://github.com/Terraform-VMWare-Modules/terraform-vsphere-vm/blob/master/variables.tf#L144-L148
variable "fqdnvmname" {
description = "If true, the vm will be created using domain variable appended"
type = bool
default = false
}3)
cryptic names (Криптические имена)Примеры:
- https://github.com/krateoplatformops/eventrouter/blob/main/main.go#L60-L66
var cfg *rest.Config
var err error
if len(*kubeconfig) > 0 {
cfg, err = clientcmd.BuildConfigFromFlags("", *kubeconfig)
} else {
cfg, err = rest.InClusterConfig()
}
cfg без какого‑либо намёка, что это именно Kubernetes REST‑конфиг, а не, скажем, конфиг логгера или чего‑нибудь ещё.
Пока не откроешь импорты и десяток файлов вокруг ни черта не понять.
- https://github.com/vmware-tanzu/vm-operator/blob/main/main.go
func initRateLimiting() {
if rateLimiterQPS == 0 && rateLimiterBurst == 0 {
return
}
cfg := ctrl.GetConfigOrDie()
...
managerOpts.KubeConfig = cfg
}cfg тут - это kubernetes REST конфиг, через который оператор лезет ко всему API кластера, но по имени это просто "какой‑то конфиг" без намёка, что именно kubeconfig, а не, например, конфиг логгера или самого приложения. Чтобы это понять, нужно либо знать паттерн ctrl.GetConfigOrDie, либо докручивать в голове по managerOpts.KubeConfig = cfg и типам. Бред.
Голанг комьюнити допускает короткие имена вроде cfg для переменных узкой области видимости, но здесь это используется на уровне файла! Алё! Тут сокращение несёт неочевидный смысл.
Бесит короч иногда.
