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