Вложенные вызовы функций
При вызове функций необходимо избегать громоздких конструкций, которые приводят к снижению читаемости кода, увеличивают вероятность ошибок и затрудняют отладку.
Например, не рекомендуется при передаче параметров в одну функцию применять вложенные вызовы других функций. Код, приводящий к замечанию по данному правилу, часто появляется в результате переноса/разбиения длинных строк.
Неправильно:
КоллекцияФайлов.Вставить(
НаименованиеФайла,
ПолучитьВремяФайла(НайденныеФайлы()[0]));
Правильно разбивать такие вызовы на отдельные операторы с помощью вспомогательных локальных переменных:
НайденныйФайл = НайденныеФайлы()[0];
ВремяФайла = ПолучитьВремяФайла(НайденныйФайл);
КоллекцияФайлов.Вставить(НаименованиеФайла, ВремяФайла);
В то же время, если код с вложенными вызовами получается компактным (не требует переноса выражений) и легко читаемым, то вложенные вызовы допустимы.
Например:
Предупреждение(НСтр("ru='Для выполнения операции необходимо установить расширение работы с файлами.'"));
СформироватьПодпись(Документ, ОтветственноеЛицо(Кассир));
Особенности
Использование в качестве параметров глобальных вызовов вида ПолучитьТекстЗапроса()
и конструкторов вида Новый Объект()
не является ошибкой, если в них не передаются параметры.
Использование в качестве параметров конструкторов структур вида Новый Структура("а, б", а, б)
не является ошибкой, если в создаваемой структуре не более 3-х параметров.
Если конструкция с вложенными вызовами занимает мало строк, это не является ошибкой. Количество допустимых строк задается параметром Максимальное количество строк вызова функции (высота), при котором допустимо использовать вложенные вызовы
, значение по умолчанию - 2
, может принимать значение 0
.
В параметре Имена функций-исключений
можно указать имена глобальных вызовов, использование которых в качестве параметров не будет являться ошибкой независимо от количества параметров в них. По умолчанию это вызовы НСтр
, ПредопределенноеЗначение
, СтрШаблон
, Формат
, ПодробноеПредставлениеОшибки
, КраткоеПредставлениеОшибки
и др.
См. также
Экранирование кода
// sonar:NestedFunctionCalls:off
// sonar:NestedFunctionCalls:on