Functional options в Go выглядят красиво ровно до момента, пока их не приходится читать... — 13 июля 2026 г. в 17:18:17.067
Functional options в Go выглядят красиво ровно до момента, пока их не приходится читать через год. Я понимаю, зачем этот паттерн придумали: гибкость, дефолты, расширяемость, всё такое. Но в реальном коде он часто превращает простую настройку в цепочку магии. Особенно странно видеть это в json/v2. Иногда честный Options struct лучше любой “элегантной” функции-конфигуратора. Открыл код - сразу видишь поля, значения и намерение. Без прыжков по WithSomething, без скрытых дефолтов, без угадывания порядка вызовов. Go всегда был силён простотой. И именно поэтому обычная структура с настройками часто выглядит более “go-way”, чем модный паттерн ради паттерна. Непопулярное мнение: не каждая гибкость стоит ухудшения читаемости.

