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

Инициализация параметров методов и конструкторов вызовом вложенных методов (NestedFunctionInParameters)

Тип Поддерживаются
языки
Важность Включена
по умолчанию
Время на
исправление (мин)
Теги
Дефект кода BSL
OS
Незначительный Да 2 standard
brainoverload
badpractice

Параметры

Имя Тип Описание Значение
по умолчанию
allowOneliner Булево Разрешить однострочные выражения true
allowedMethodNames Строка Имена методов, которые разрешено использовать для инициализации параметров НСтр,NStr,ПредопределенноеЗначение,PredefinedValue

Описание диагностики

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

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

Примеры

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

СтруктураВложений.Вставить(
 ПрисоединенныйФайл.Наименование,
 Новый Картинка(ПолучитьИзВременногоХранилища(
  ПрисоединенныеФайлы.ПолучитьДанныеФайла(ПрисоединенныйФайл.Ссылка).СсылкаНаДвоичныеДанныеФайла)));

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

АдресФайлаИзображения = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ПрисоединенныйФайл.Ссылка).СсылкаНаДвоичныеДанныеФайла;
ДанныеИзображения = Новый Картинка(ПолучитьИзВременногоХранилища(АдресФайлаИзображения));
СтруктураВложений.Вставить(ПрисоединенныйФайл.Наименование, ДанныеИзображения);

Источники

Сниппеты

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

// BSLLS:NestedFunctionInParameters-off
// BSLLS:NestedFunctionInParameters-on

Параметр конфигурационного файла

"NestedFunctionInParameters": {
    "allowOneliner": true,
    "allowedMethodNames": "НСтр,NStr,ПредопределенноеЗначение,PredefinedValue"
}