Конфиги и SYNX

Last updated: 2026-09-05SYNX как формат ничего не требует — дисциплина спрашивается только с конфигов, и ровно за тем, чтобы одно и то же называлось одинаково во всех продуктах.

Конфиги

SYNX сам по себе — формат свободный. В нём лежат игровые данные, каталоги, наборы подсказок, справочные примеры; дисциплина имён им не нужна, потому что их словарь принадлежит домену: moveCost, atk, danceability — это язык предметной области, а не небрежность автора. Стандарт в такие файлы не лезет вовсе.

Дисциплина спрашивается только с конфигов, и ровно по одной причине: конфиг у всех сервисов один и тот же по смыслу. Адрес кэша, секрет внутреннего API, TTL сессии, ключ бакета — одни и те же вещи в десятке продуктов. Если в одном сервисе значение зовётся internal_api_secret, в другом internal_secret, а в третьем auth.secret, то следующий человек ищет в новом сервисе то, что у него уже было, не находит и заводит четвёртое имя. Через год конфиги нельзя ни сравнить, ни перенести.

Поэтому правил здесь мало, и они про одно: одно и то же называется одинаково везде.

Одно значение платформы — одно имя

Проверяется сравнением конфигов между собой: если одна и та же переменная окружения читается в разных сервисах под разными путями — это ошибка.

synx
# в одном сервисе
redis
  url[required]:env REDIS_URL      # путь: redis.url

# в другом то же самое, но иначе
redis_url[required]:env REDIS_URL  # путь: redis_url — расхождение

Побеждает написание, уже принятое в большинстве сервисов: переименовать одного дешевле, чем девятерых.

Имя ключа

synx
!active

port[type:int]:env:default:7001 PORT
refresh_ttl_sec[type:int] 900        # не refresh_ttl, не refresh_ttl_seconds
otp_length_count[type:int] 6         # число всегда с единицей
is_signup_open[type:bool] true       # булево — с префиксом
db_pool_max_count[type:int] 20       # «max» само по себе не единица
  • ключ — snake_case;
  • число несёт единицу: _ms _sec _min _hours _days _bytes _kb _mb _cents _pct _count _index;
  • булево начинается с is_ has_ can_ should_ was_ will_ must_;
  • слова-пустышки (data, info, value, result) запрещены и здесь.

Единица пишется так же, как в коде: _sec, а не _seconds. Разнобой стоит ровно столько же, сколько отсутствие единицы: приходится помнить два варианта.

Где проходит граница

По имени файла: проверяются те, что действительно конфигурируют сервис (app.synx, values.synx, platform.synx), и они перечислены явным списком. Прогон правил по всем файлам формата в нашем репозитории давал 1091 находку, из которых 1036 были придиркой к языку домена, — поэтому граница проведена по списку, а не по расширению.

Комментарии

В конфиге комментарий подписывает раздел, а не пересказывает строку, — правило пяти тегов к нему не применяется. Это единственное послабление, и оно намеренное: # Сервер, # Redis, # Лимиты помогают читать файл и ничего не обещают о «почему».

Конфиги и SYNX | AS Docs