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

Правила оформления кода

Стандарты разработки

Желательно придерживаться официальных стандартов разработки 1С.

Ограничения

  • Нежелательно использовать табличные части обработок и отчетов. Это связано с особенностями сборки портативных инструментов
  • Для использования чужих обработок нужно разрешение автора или подходящая лицензия (MIT, GPL и т.д.)
  • Все изменения должны быть совместимы с режимом отключенной поддержки модальности и синхронных вызовов

Префиксы и именование

  • Все общие модули, обработки и прочие объекты метаданных подсистемы используют префикс УИ_
  • Публичные методы модулей должны быть документированы в коде

Имена переменных

  • Имена переменных следует образовывать от терминов предметной области так, чтобы из имени было понятно назначение
  • Каждое слово в имени пишется с прописной буквы, пробелы удаляются. Предлоги и местоимения из одной буквы также пишутся прописными
  • Имена переменных запрещается начинать с подчеркивания
  • Имена не должны состоять из одного символа (исключение — счётчики циклов)
  • Переменные-флаги следует называть так, как пишется истинное значение этого флага
// Плохо:
масРеквизитов
ГалкаОшибка
ФлагТара
новСтр

// Хорошо:
КоличествоПачекВКоробке
ЕстьОшибки
ЭтоТоварТара
ДиалогРаботыСКатлогом
  • Не используйте отрицание в именах переменных
// Плохо:
Перем НетОшибок;

// Хорошо:
Перем ЕстьОшибки;

Имена процедур и функций

  • Имена процедур, функций и формальных параметров образуются от терминов предметной области. Имя должно быть «говорящим» (самодокументирующимся)
  • Каждое слово пишется с прописной буквы, пробелы удаляются
  • Не рекомендуется указывать в имени типы принимаемых параметров или возвращаемого значения
// Плохо:
Функция ПолучитьМассивРолейСПравомДобавления()
Функция ПолучитьСтруктуруДополнительныхНастроек()

// Хорошо:
Функция ИменаРолейСПравомДобавления()
Функция ДополнительныеНастройки()
  • Процедуры — имя образуется от неопределённой формы глагола (что сделать?)
  • Функции — имя образуется от описания возвращаемого значения (существительное)
// Процедуры:
Процедура ЗагрузитьКонтрагента() // правильно
Процедура ЗагрузкаКонтрагента() // неправильно

// Функции:
Функция ПолноеИмяПользователя() // правильно
Функция ПолучитьПолноеИмяПользователя() // неправильно
Функция НовыеПараметрыЗаполнения() // правильно
Функция ДатаНачалаСеанса() // правильно
  • Параметр функции не должен использоваться как дополнительный вывод — весь результат возвращается через возвращаемое значение. Если нужно вернуть несколько значений, используйте Структура, Массив и т.д.
  • Не используйте отрицание в именах методов
// Плохо:
Функция ПроверкаНеПройдена()

// Хорошо:
Функция ПроверкаПройдена()

Совместимость с разными платформами

ПроблемаКод заменяемыйКод необходимыйСсылки
Пустые конструкторы ОписаниеОповещения в платформах < 8.3.12Новый ОписаниеОповещенияУИ_ОбщегоНазначенияКлиент.НовыйПустоеОписаниеОповещения()#668

Лицензионная чистота форков

При добавлении инструментов из других репозиториев обязательно:

  1. Получить разрешение автора (ссылка на issue/письмо)
  2. Убедиться, что лицензия исходного инструмента совместима с GPL-3.0
  3. Указать автора и источник в README и в коде