Вопрос чистоты кода в 1С часто воспринимается новичками как нечто второстепенное. Однако опытные разработчики знают, что «мусорные» пробелы, неверные отступы и хаотичная смесь табуляций с пробелами могут привести к серьезным проблемам при командной разработке, использовании систем контроля версий и даже при запуске программы на разных операционных системах. В этой статье мы подробно разберем, как привести код в соответствие с профессиональными стандартами, какие инструменты для этого использовать и почему это критически важно для качества продукта.
Прежде чем приступать к исправлению уже написанного кода, нам необходимо правильно настроить рабочую среду. Разберем по шагам, какие параметры в Конфигураторе отвечают за визуализацию и ввод невидимых символов. Пройдем в меню Сервис — Параметры — Тексты. Здесь нас интересуют следующие настройки:
Проанализируем основные принципы, которые помогут сделать ваш код профессиональным и читаемым. Рассмотрим правила, которые де-факто являются стандартом в сообществе 1С:
Отступы слева: для формирования структуры вложенности (внутри циклов Для, условий Если, процедур и функций) используйте только символ табуляции. Никогда не используйте пробелы для этих целей.
Выравнивание внутри строки: если вам необходимо выровнять однотипные конструкции (например, при объявлении структуры или заполнении полей запроса), используйте пробелы. Это гарантирует, что ваше выравнивание «не поплывет», если другой разработчик откроет код с иными настройками ширины табуляции. Посмотрим на пример:
Параметры = Новый Структура;
Параметры.Вставить("Имя", "Иван");
Параметры.Вставить("Фамилия", "Иванов");
Параметры.Вставить("Город", "Москва");
В данном примере отступ перед словом Параметры сделан табуляцией, а выравнивание вторых параметров метода Вставить выполнено пробелами. Это эталонный вариант.
Рассмотрим проблему лишних символов, которые визуально не заметны, но присутствуют в тексте модуля. К ним относятся:
Выясним причину, почему это важно. При работе в ОС Linux или использовании веб-клиента интерпретация символов может отличаться. Лишние пробелы в пустых строках иногда приводят к некорректному рендерингу текста в окне отладки или при сравнении версий файлов. Кроме того, системы автоматизированной проверки кода (линтеры) всегда помечают такие строки как ошибку.
Вместо того чтобы вручную удалять каждый лишний пробел, воспользуемся встроенными и внешними средствами автоматизации. Разберем наиболее эффективные из них:
Встроенное форматирование: выделите нужный блок кода (или весь текст модуля через Ctrl+A) и нажмите комбинацию клавиш Alt+Shift+F. Конфигуратор самостоятельно выставит правильные отступы табуляцией в начале строк. Однако помните, что встроенный механизм не всегда удаляет пробелы в конце значимых строк и в абсолютно пустых строках.
PhoenixBSL: это отличный инструмент для проверки кода. Он помогает быстро найти проблемные места, которые не видит стандартный синтакс-контроль. Проанализируем его возможности: он подсвечивает неиспользуемые переменные, ошибки в логике и нарушение некоторых стандартов оформления.
EDT (Enterprise Development Tool): если вы перешли на разработку в среде Eclipse (EDT), вам доступен функционал EditorConfig. Это специальный файл настроек проекта, который заставляет среду разработки автоматически удалять концевые пробелы и следить за использованием табуляций при каждом сохранении файла.
В процессе обсуждения чистоты кода часто всплывает вопрос именования. В 1С существует строгий стандарт, который помогает разработчикам лучше понимать структуру кода без чтения комментариев. Разберем это правило подробнее:
Функции: если метод возвращает значение, его имя должно быть существительным, описывающим результат. Например, вместо ПолучитьТекущиеДанные() следует использовать ТекущиеДанные(). Это связано с тем, что функция в выражении воспринимается как само значение. Рассмотрим пример:
// Плохо
Данные = ПолучитьТекущиеДанные();
// Хорошо (согласно стандарту)
Данные = ТекущиеДанные();
Процедуры: так как процедура всегда выполняет какое-то действие, её имя должно начинаться с глагола. Например: РассчитатьНалог(), ЗаполнитьДокумент(), ВывестиСообщение().
Исключения: глаголы в именах функций допускаются только тогда, когда процесс получения результата первичен (например, НайтиФайл() или ВычислитьСложныйПроцент()). В этих случаях глагол подчеркивает, что программа выполняет трудоемкий поиск или расчет.
Проанализируем ситуацию: два программиста работают над одним общим модулем. Один использует пробелы для отступов, а второй нажал Alt+Shift+F и переформатировал модуль под табуляции. При попытке объединить изменения (Merge) система Git покажет, что изменены все строки в файле. Это делает невозможным использование инструмента Blame (кто и когда изменил конкретную строку) и крайне затрудняет код-ревью. Именно поэтому соблюдение единого стандарта отступов — это не прихоть, а производственная необходимость в крупных проектах.
Для предотвращения подобных ситуаций в современных командах используются линтеры и системы статического анализа, такие как SonarQube. Они автоматически блокируют попытку загрузить код в основную ветку, если в нем обнаружены неверные отступы или лишние пробелы в пустых строках.
Подведем итог нашему разбору. Для поддержания высокого качества кода в 1С рекомендуем придерживаться следующего алгоритма:
Конфигуратор на использование табуляций и включите видимость пробелов.BSL Language Server в VS Code или PhoenixBSL), чтобы автоматизировать рутину контроля качества.Соблюдение этих простых правил не только избавит вас от проблем с кроссплатформенностью, но и сделает ваш код понятным и приятным для коллег, что является важным признаком профессионального роста разработчика.