Перейти к содержанию

Вложенные вызовы функций

При вызове функций необходимо избегать громоздких конструкций, которые приводят к снижению читаемости кода, увеличивают вероятность ошибок и затрудняют отладку.

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

Неправильно:

КоллекцияФайлов.Вставить(
    НаименованиеФайла,
    ПолучитьВремяФайла(НайденныеФайлы()[0]));

Правильно разбивать такие вызовы на отдельные операторы с помощью вспомогательных локальных переменных:

НайденныйФайл = НайденныеФайлы()[0];
ВремяФайла = ПолучитьВремяФайла(НайденныйФайл);
КоллекцияФайлов.Вставить(НаименованиеФайла, ВремяФайла); 

В то же время, если код с вложенными вызовами получается компактным (не требует переноса выражений) и легко читаемым, то вложенные вызовы допустимы.

Например:

Предупреждение(НСтр("ru='Для выполнения операции необходимо установить расширение работы с файлами.'"));

СформироватьПодпись(Документ, ОтветственноеЛицо(Кассир));

Особенности

Использование в качестве параметров глобальных вызовов вида ПолучитьТекстЗапроса() и конструкторов вида Новый Объект() не является ошибкой, если в них не передаются параметры.

Использование в качестве параметров конструкторов структур вида Новый Структура("а, б", а, б) не является ошибкой, если в создаваемой структуре не более 3-х параметров.

Если конструкция с вложенными вызовами занимает мало строк, это не является ошибкой. Количество допустимых строк задается параметром Максимальное количество строк вызова функции (высота), при котором допустимо использовать вложенные вызовы, значение по умолчанию - 2, может принимать значение 0.

В параметре Имена функций-исключений можно указать имена глобальных вызовов, использование которых в качестве параметров не будет являться ошибкой независимо от количества параметров в них. По умолчанию это вызовы НСтр, ПредопределенноеЗначение, СтрШаблон, Формат, ПодробноеПредставлениеОшибки, КраткоеПредставлениеОшибки и др.

См. также

Экранирование кода

// sonar:NestedFunctionCalls:off
// sonar:NestedFunctionCalls:on