Перейти к содержимому

Практичные правила из публичных стайл-гайдов, дополняющие v8std. Большинство автоматизируется диагностиками BSL LS.

Собственные объекты в типовых конфигурациях создаются под префиксом: КИ_ и ДД_ (по конфигурации). Префикс отличает наши объекты от типовых и снижает конфликты при обновлении и merge — это обязательное соглашение для командной разработки и аутсорса.

Именование в коде:

  • Булевы — по истинному состоянию (ЕстьОшибки, ЭтоТоварТара), без отрицаний в названии флага.
  • Процедуры — глагол по действию: СформироватьПроводки, ОбновитьКэш. Функции — сущность/результат: НомерДокумента(), ПараметрыПодключения().
  • «Магические» сокращения без словаря команды запрещены — аутсорс уносит контекст из проекта вместе с собой.
  • Длина строки — до ~120 символов (удобно для ревью и диффов).
  • Guard-оператор вместо вложенных условий: ранний Возврат/Продолжить.
  • Ограничивать уровень вложенности конструкций.
  • Сложные условия выносить в переменные/функции с говорящими именами.
  • Длинные сигнатуры (много параметров) → передавать структуру.
  • Экспортные процедуры/функции — с описанием; скопированный из интернета код — с пометкой-источником.
  • Не разбивать текст запроса построчной конкатенацией — это ломает конструктор запросов. Динамику собирать блоками, не ломающими конструктор (например, заменой (1 = 1) на условие).
  • Не смешивать контексты: условия отбора — в ГДЕ, условия связи — в ПО.
  • Проверка пустого результата — через Запрос.Выполнить().Пустой(), а не выборку.
  • ВызватьИсключение; в блоке Исключениебез параметра (сохраняет стек).
  • Не передавать текст ошибки строкой вместо записи в ЖР.
  • Использовать ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), а не ОписаниеОшибки().
  • Каноничный блок: НачатьТранзакцию / Попытка / ЗафиксироватьТранзакцию / Исключение / ОтменитьТранзакцию / ВызватьИсключение.
  • Управляемые блокировки при многопоточной загрузке — обязательны против дублей и гонок.

Эти правила v8std формулирует обобщённо или не покрывает вовсе, а в ревью они всплывают чаще всего. Собранные в одном месте, они дают единый ориентир и подключаются к профилю диагностик.

  • Префиксы не нужны в самописных конфигурациях с нуля (там нет типовых объектов, от которых надо отличаться) — но нужны всегда в доработках типовых.
  • Guard-операторы не самоцель: если условие одно и блок короткий, обычный Если читается не хуже.
  • В код типовой конфигурации, который правится точечно (без рефакторинга), стиль окружающего кода важнее наших правил — не переформатируйте чужие модули «заодно».