Прикладной код

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

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

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

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

Отступы

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

    Внимание!

    Для создания отступа не следует использовать символ «табуляция». В случае, если в коде используется пробел и табуляция одновременно, в редакторе такой фрагмент будет отмечен значком предупреждения.

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

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

  1. Открывающая фигурная скобка ставится в строке оператора.
  2. Текст после фигурной скобки начинается на следующей строке с отступом.
  3. Закрывающая фигурная скобка ставится ровно под оператором.
  4. // хорошо
    if (Переменная1 > Переменная2) {
     ...
     Переменная1 = Переменная3;
     ...
    }
    
    // плохо
    if (Переменная1 > Переменная2) { ...Переменная1 = Переменная2;...
    }
    
  5. Возвращаемое значение не следует заключать в круглые скобки.
  6. // хорошо
    return Сумма;
    // плохо
    return (Сумма);
    
  7. Выражение, заключаемое в круглые скобки, пробелами от этих скобок не отделяется.
  8. // хорошо
    if (Переменная1 > Переменная2)
     Проводка(Дата, '70', [Сотрудник], '50', Сумма);
    
    // плохо
    if ( Переменная1 > Переменная2 )
     Проводка( Дата, '70', [Сотрудник], '50', Сумма );
    

Переменные

  1. Имена переменных, функций должны быть содержательными. Например, имя переменной «Перем1» не несет смысловой нагрузки, а по имени «ВидПлатежа» можно понять, для чего объявленная переменная будет использоваться.
  2. В названии переменной каждое осмысленное слово должно начинаться с заглавной буквы, например, «СтатьяРасхода».
  3. Префиксы «п», «м», «о» в описании переменных использоваться не должны.
  4. Использовать символ «ё» в именах запрещается.
  5. При описании нескольких переменных оператор «var» указывается единожды, а сами переменные располагаются в столбец.
  6. // хорошо
    var СтатьяРасхода1 = 1, 
        СтатьяРасхода2 = 2, 
        СтатьяРасхода3 = 3; 
    // плохо
    var переменная1 = 1, переменная2 = 2, переменная3 = 3; 
    // плохо
    var Переменная1 = 1; 
    var Переменная2 = 2; 
    var Переменная3 = 3;
    
  7. Символы оператора «?...:» рекомендуется отделять пробелами.
  8. // хорошо
    var Итог = (Переменная1 < Переменная2) ? Переменная1 : Переменная2;
    
  9. Присваивая переменной значение в виде длинного текста, необходимо использовать конкатенацию строк, а не «\».
  10. // хорошо
    var Переменная1 = 'Это очень длинная строка' + 'которая не помещается' + 'в строке редактора';
    // плохо
    var Переменная1 = 'Это очень длинная строка\которая не помещается\в строке редактора';
    

Выражения

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

Комментарии

  1. Настоятельно рекомендуется использовать комментарии в тексте кода.
  2. Используя функции по определению аналитик или статей расхода/дохода, обязательно указывайте в комментарии название этой аналитики.
  3. // xорошо
    ВидПлатежа = НайтиАналитику('ВидыНП', 'НПОб'); // НПОб — обычный платеж
    // плохо
    ВидПлатежа = НайтиАналитику('ВидыНП', 'НПОб'); // обычный платеж
    
  4. Многострочные комментарии оформляются с помощью конструкции . Отступ в таких комментариях должен быть такой же, как и в самом коде.
  5. // Хорошо.
    /*
    Описание алгоритма работы функции.
    Поясняются причины выбора данного решения.
    */
    function make(tag) {
     ...
     return element;
    }
    // Плохо.
    // Описание алгоритма работы функции.
    // Поясняются причины выбора данного решения.
    function make(tag) {
     ...
     return element;
    }
    

if...else

Используйте пробел перед и после условия. Пробелы между условием и круглыми скобками не ставятся.

// Хорошо.
if (test) {
   return false;
}
// Плохо.
if(test){
   return false;
}
// Плохо.
if( test ){
   return false;
}
// Плохо.
if(test) {
   return false;
}

Размещайте else в одной строке с закрывающей скобкой.

// Хорошо.
if (test) {
   return false;
} else if (something) {
   return true;
}
// Плохо.
if (test) {
   return false;
}
else {
   return true;
}
// Плохо.
if (test) {
   return false;
}else{
   return true;
}

switch...case

Выражение и выполняемые действия следует перенести на следующую строчку с дополнительным отступом в три пробела.

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

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

Функции

Создание

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