Я видел некоторый код, в котором аргументы передали функции значением, изменялся или присвоил новое значение и использовался как локальная переменная.
Действительно ли это - хорошая вещь сделать? Есть ли какие-либо ловушки выполнения этого, или это в порядке для кодирования как это?
По сути, параметр функции - локальная переменная, поэтому эта практика неплохая в принципе.
С другой стороны, это может привести к техническому обслуживанию головных болей. Если наступает другой программист позже, он может ожидать, что переменная удерживает пропущенную стоимость, и изменение приведет к ошибке.
Одним из обоснований для повторного использования переменной является ошибочное понятие эффективности использования памяти. На самом деле, он не может повысить эффективность и может уменьшить его. Причина в том, что компилятор может автоматически определять, если полезно использовать тот же реестр для двух разных переменных в два разных раз, и сделает это, если это будет лучше. Но программист не должен принимать это решение для компилятора. Это ограничит выбор компилятора.
Самая безопасная практика - использовать новую переменную, если она нуждается в новом значении, и полагаться на компилятор, чтобы сделать его эффективным.
Нет проблем вообще, о которых я могу думать. Аргументы будут либо размещены в текущем кадре стека или в регистрах, как и любая другая локальная переменная. Убедитесь, что аргументы передаются по значению, однако. В частности, массивы проходят посредством ссылки.