Предварительная инициализация локальных переменных
Сегодня про достаточно простой стандарт, но как по мне, сильно упрощающий жизнь и проблемы.
#std494
В случаях когда фрагмент кода вычисляет значение одной или нескольких локальных переменных, рекомендуется явно выполнять предварительную инициализацию таких переменных. Это позволит избежать потенциальных ошибок времени выполнения, когда значение переменной оказывается Неопределено, а последующий код рассчитывает на определенный тип значения. Например:
Если ЧтоТоТам Тогда
МояПеременная = 10;
ИначеЕсли
// ряд следующих веток
…
КонецЕсли;
... = МояПеременная; // если ЧтоТоТам не ИСТИНА, то нужно учитывать, что МояПеременная может быть равна Неопределено
Правильно:
МояПеременная = 0; // значение по умолчанию
Если ЧтоТоТам Тогда
МояПеременная = 10;
ИначеЕсли
// ряд следующих веток
…
КонецЕсли;
... = МояПеременная; // используем значение переменной, которая всегда имеет числовое значение
Данная рекомендация имеет смысл для больших блоков Если/ИначеЕсли/Иначе, внутри которых сложно визуально по тексту контролировать инициализацию переменных.
Приведенный первым пример кода не выдаст ошибки, необъявленная переменная будет просто = Неопределено. Но бывают случаи, когда с этой переменной выполняются какие-либо арифметические действия, и будет явная ошибка несоответствия типов.
Как по мне, и в своей практике я этого придерживаюсь, гораздо нагляднее когда переменная объявлена явно, до сложного условия или цикла.
В дополнение, если у вас автоматизирована хотя бы какая-то проверка кода, то этот момент в них как правило подсвечивается.
P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std494