В 1С легко получить короткую процедуру, которая всё равно требует от читателя восстановить половину контекста: что именно создаётся, что считается успехом, можно ли повторить запуск и где заканчивается одна бизнес-операция.
Проблема — не длина, а инфраструктурный шум
Служебный код неизбежен: нужно создать объект, заполнить реквизиты, перенести строки, записать, провести и обработать ошибку. Проблема появляется, когда эти действия занимают всё поле зрения, а намерение остаётся только в голове автора.
Читатель видит механизм раньше, чем понимает решение.
Механическое сокращение строк не исправляет это. Можно собрать всё в один сложный вызов и сделать код ещё менее объяснимым. Нужна не компрессия, а правильная иерархия информации.
Три слоя читаемого сценария
Намерение
Какой бизнес-результат должен появиться после выполнения?
Контракт
Какие данные обязательны, что считается допустимым повтором и где границы операции?
Исполнение
Какая последовательность действий гарантирует заявленный результат?
Когда эти слои различимы, код можно читать сверху вниз. Комментарий не пересказывает синтаксис, а фиксирует решение и ограничение. Цепочка методов показывает исполнение, не смешивая его со служебными деталями.
Один сценарий — одна видимая операция
Ниже код создаёт документ, загружает подготовленные строки и проводит его. Наведите на смысловую строку или цветной токен: компонент покажет роль элемента, а не просто его тип.
// Намерение: провести полностью подготовленный документ
// Контракт: шапка и строки готовы до вызова Post
A1sDocs.On("РеализацияТоваровУслуг",
A1sDS.Of(
"Дата", ТекущаяДата(),
"Контрагент", Контрагент))
.LoadRows("Товары", Строки)
.Post();
Сначала понятен результат и гарантия, затем виден входной контракт, после чего три действия складываются в одну бизнес-операцию.
MILA-комментарий не объясняет очевидное
Комментарий // загружаем строки почти ничего не добавляет: это уже видно из LoadRows. Полезный комментарий отвечает на вопрос, которого нет в синтаксисе.
// Проводим документПовторяет ближайший вызов.
// Контракт: строки готовы до PostФиксирует границу и предотвращает частично выполненный сценарий.
Такой комментарий полезен одновременно разработчику, ревьюеру и модели, которая учится на коде. Он сохраняет не только действие, но и причину выбранной последовательности.
Критерий готовности
Перед тем как считать сценарий читаемым, достаточно проверить четыре вопроса:
- 01Результат понятен до деталей?
Читатель может одним предложением назвать итог операции.
- 02Входной контракт видим?
Обязательные данные и значения по умолчанию не спрятаны в середине процедуры.
- 03Граница операции явная?
Понятно, в какой момент состояние считается полностью подготовленным.
- 04Комментарий добавляет причину?
Он описывает намерение или ограничение, а не дублирует имя метода.
Если на эти вопросы можно ответить без мысленного исполнения каждой строки, код уже работает как документация решения.