Существуют ли объективные, поддерживаемые аргументы в пользу разработки программного обеспечения за или против изменения значений параметров в теле функции?
Повторяющаяся ссора (в основном в хорошем шутке) в моей команде заключается в том, следует ли изменять параметры, передаваемые по значению. Пара членов команды непреклонна, что параметры никогда не должны назначаться, так что всегда можно запросить значение, первоначально переданное функции. Я не согласен и считаю, что параметры - это не более чем локальные переменные, инициализируемые синтаксисом вызова метода; если исходное значение параметра по значению важно, то может быть объявлена локальная переменная для явного хранения этого значения. Я не уверен, что кто-либо из нас очень хорошо поддерживает нашу позицию.
Это неразрешимый религиозный конфликт или есть хорошие, объективные причины для разработки программного обеспечения в любом направлении?
Примечание: принципиальный вопрос остается независимо от деталей реализации конкретного языка. Например, в JavaScript, где список аргументов всегда динамический, параметры можно рассматривать как синтаксический сахар для инициализации локальной переменной из argumentsобъекта. Несмотря на это, идентификаторы, объявленные параметрами, можно рассматривать как «особые», поскольку они по-прежнему фиксируют передачу информации от вызывающего к вызываемому.