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

Каждый модуль оформляется по стандартной структуре областей. Экспортный API — только в #Область ПрограммныйИнтерфейс, приватная реализация — в #Область СлужебныеПроцедурыИФункции. Публичный API не размазывается по модулю.

Порядок областей:

  • #Область ПрограммныйИнтерфейс — только экспортный API;
  • #Область СлужебныйПрограммныйИнтерфейс — экспорт для внутреннего слоя подсистемы;
  • #Область ОбработчикиСобытий — обработчики объекта/формы;
  • #Область СлужебныеПроцедурыИФункции — приватная реализация;
  • #Область Инициализация — минимальная инициализация без бизнес-логики.

Для модуля формы порядок свой (тот же принцип «событийное — отдельно от реализации»):

  • #Область ОписаниеПеременных;
  • #Область ОбработчикиСобытийФормы (ПриСозданииНаСервере, ПриОткрытии, …);
  • #Область ОбработчикиСобытийЭлементовШапкиФормы;
  • #Область ОбработчикиСобытийЭлементовТаблицыФормы<Имя> — по области на таблицу;
  • #Область ОбработчикиКомандФормы;
  • #Область СлужебныеПроцедурыИФункции.

Оформление: один оператор управления на строку, отступ табуляцией, ключевые слова запросов заглавными. Закомментированный код в основной ветке запрещён — история живёт в git.

В чужом неструктурированном модуле (типовая конфигурация, старый код) не переоформляйте весь модуль ради одной правки — дифф должен показывать суть изменения, а не переезд строк (см. минимальные изменения и совместимость). Новый код при этом кладётся в правильную область: если областей нет — создать свою для добавляемого кода, не трогая остальное.

Предсказуемые «точки входа» ускоряют ревью и передачу задач между разработчиками и подрядчиками: публичный API не теряется в реализации, а структура читается одинаково во всех модулях.

Автогенерируемые модули (например, модули команд, создаваемые платформой) и пустые модули-заглушки. Во всех рукописных модулях правило действует всегда.