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

Перезапись параметров метода, переданных по значению

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

Подозрительный код

Функция МояФункция(Знач Парам1, Парам2) 
    Парам1 = СтрЗаменить(Парам2, "1", "11"); 
    Парам1 = Объект.Функ(Парам1);
КонецФункции

Исправленный код

Функция МояФункция(Знач Парам1, Парам2) 
    Парам1 = Объект.Функ(Парам1);
    Парам2 = СтрЗаменить(Парам2, "1", "11"); 
КонецФункции

См. также - PVS-Studio V763. Parameter is always rewritten in function body before being used - Статья на хабре от PvsStudio с примерами для V590 - Лучшие Copy-Paste алгоритмы для C и C++. Сборник рецептов Haiku OS