СТАНДАРТ ОФОРМЛЕНИЯ ОПЕРАЦИЙ

Язык программирования СБИС используется для настройки новых, а также изменения существующих операций.

Как правило, настраивает и поддерживает работоспособность бизнес-процессов организации не один сотрудник. Чтобы обеспечить легкость понимания и простоту восприятия «чужого» кода, необходимо придерживаться общих правил по оформлению кода.

Отступы

  1. Отступ представляет собой 3 (три) подряд стоящих пробела.

    Внимание!

    Для создания отступа не следует использовать символ «табуляция».

  2. Каждое выражение должно начинаться с новой строки.
  3. Логические блоки кода следует разделять пустой строкой.

Скобки — {}, (), []

  1. Открывающая фигурная скобка ставится в строке оператора.
  2. Текст после фигурной скобки начинается на следующей строке с отступом.
  3. Закрывающая фигурная скобка ставится ровно под оператором.
// хорошо
if (Переменная1 > Переменная2) {
   ...
   Переменная1 = Переменная3;
   ...
}

// плохо
if(Переменная1 > Переменная2){...Переменная1 = Переменная2; ...}
  1. Возвращаемое значение не следует заключать в круглые скобки.
// хорошо
return Сумма;

// плохо
return (Сумма);
  1. Выражение, заключаемое в круглые скобки, пробелами от этих скобок не отделяется.
// хорошо
if (Переменная1 > Переменная2)
   Проводка(Дата, '70', [Сотрудник], '50', Сумма);

Переменные

  1. Имена переменных, функций должны быть содержательными. Например, имя переменной «Перем1» не несет смысловой нагрузки, а по имени «ВидПлатежа» можно понять, для чего объявленная переменная будет использоваться.
  2. В названии переменной каждое осмысленное слово должно начинаться с заглавной буквы, например, «СтатьяРасхода».
  3. Префиксы «п», «м», «о» в описании переменных (как это было в СБИС++ 2.0) использоваться не должны.
  4. Использовать символ «ё» в именах запрещается.
  5. При описании нескольких переменных оператор «var» указывается единожды, а сами переменные располагаются «в столбик».
// хорошо
var Переменная1 = 1,
    Переменная2 = 2,
    Переменная3 = 3;

// плохо
var Переменная1 = 1, Переменная2 = 2,
    Переменная3 = 3;

// плохо
var Переменная1 = 1;
var Переменная2 = 2;
var Переменная3 = 3;
  1. Символы оператора «?...:» рекомендуется отделять пробелами.
// хорошо
var Итог = (Переменная1 < Переменная2) ? Переменная1 : Переменная2;
  1. Присваивая переменной значение в виде длинного текста, необходимо использовать конкатенацию строк, а не «\».
// хорошо
var Переменная1 = 'Это очень длинная строка' +
                  'которая не помещается' + 
                  'в строке редактора';
// плохо
var Переменная1 = 'Это очень длинная строка\
                   которая не помещается\
                   в строке редактора';

Выражения

  1. Любой оператор всегда следует выделять пробелами с обеих сторон.
  2. Каждое выражение должно начинаться с новой строки.
// хорошо
Переменная1 = Переменная2 - Переменная3;
Переменная4 = Переменная2 + Переменная1;

// плохо
Переменная1=Переменная2-Переменная3;
Переменная4=Переменная2+Переменная1;

Комментарии

  1. Настоятельно рекомендуется использовать комментарии в тексте кода.
  2. Используя функции по определению аналитик или статей расхода/дохода, обязательно указывайте в комментарии название этой аналитики.
// xорошо
ВидПлатежа = НайтиАналитику('ВидыНП', 'НПОб'); // НПОб – обычный платеж
  1. Для обозначения многострочного комментария рекомендуется использовать символы «/*» и «*/».
/* пример комментария по функции
   описание функции
   создал 11.08.15 Петров И.С.
*/
  1. Следует избегать вложенности комментариев.
/*
C 2016-02-05 пробуем работать без ПодсчётКоличества()
Тесты логики: Петров И.С.
   /* 
   функция ПодсчётКоличества разработана 2016-02-04
   разработчик Иванов П.С.
   */
   function ПодсчётКоличества(Элементы) {
   ...
   }
*/

if...else

При составлении выражения в качестве условия следует выбирать положительное утверждение, а не отрицательное.

// хорошо
if (Переменная1 == 1)
   Действие1;
else
   Действие2;

// плохо
if (Переменная1 != 1)
   Действие2;
else
   Действие1;

 switch...case

  1. Выражение и выполняемые действия следует перенести на следующую строчку с дополнительным отступом в три пробела.
// хорошо
switch (ТипПлатежа) {
   case '0':
      return НайтиАналитику('ВидыНП', 'НПОб'); // НПОб - обычный платеж
   case '1':
      return НайтиАналитику('ВидыНП', 'НПП'); // НПП - Пени
   case '2':
      return НайтиАналитику('ВидыНП', 'НППроц'); // НППроц - проценты
   case '3':
      return НайтиАналитику('ВидыНП', 'НПШтф'); // НПШтф - штрафы
   default :
      return Нет;
}

Функции

Создание

  1. Название пользовательской функции не должно совпадать с названием встроенной функции, даже если у нее другое количество параметров.
  2. После названия и перед телом функции должен стоять комментарий: краткое описание этой функции, что она делает, ее особенности.
  3. В функции следует явно определять все используемые локальные переменные, чтобы случайно не изменить существующие глобальные переменные.
  4. Описывать переменные рекомендуется около места их первого использования, а не все в самом начале.
  5. Если переменная используется только внутри блока или цикла и после этого блока она больше не используется, то определять эту переменную нужно внутри этого блока.
  6. Функция не должна определять глобальные переменные или массивы. Если требуется, то нужно вернуть массив или передать туда эти переменные, используя оператор var.

ДляВсех(ФункцияПеребора, ФункцияДействия)

  1. Название ФункцииДействия должно содержать действие, которое она осуществляет.

  2. ФункциюДействия рекомендуется выносить в отдельный блок, например:

ДляВсех(Следствий(Документ,'ИсходящийПлатеж','РасходныйОрдер'), ПровестиСледствие);

//Дополнительные функции
function ПровестиСледствие(Связь) {
...
Проводка(Дата, '60-01', [Связь.Лицо1, Нет, ДокПоступление],
               '60-02', [Связь.Лицо1, Нет, Связь.Лицо], Связь.Сумма);
...
}
  1. Нельзя ФункциюДействия создавать в функции ДляВсех.
ДляВсех(Следствий(Документ, 'ИсходящийПлатеж','РасходныйОрдер'), function(Связь) {
...
Проводка(Дата, '60-01', [Связь.Лицо1, Нет, ДокПоступление],
               '60-02', [Связь.Лицо1, Нет, Связь.Лицо], Связь.Сумма);
...
});
4
0
Оставьте свой отзыв:
ОТПРАВИТЬ