¿Existen argumentos objetivos y compatibles de ingeniería de software a favor o en contra de modificar los valores de los parámetros de sub-valor en el cuerpo de una función?
Una disputa recurrente (principalmente en buena diversión) en mi equipo es si los parámetros pasados por valor deben modificarse o no. Un par de miembros del equipo están convencidos de que nunca se deben asignar parámetros, por lo que el valor que se pasó originalmente a la función siempre se puede consultar. No estoy de acuerdo y sostengo que los parámetros no son más que variables locales inicializadas por la sintaxis de llamar al método; si el valor original de un parámetro por valor es importante, entonces se puede declarar una variable local para almacenar explícitamente este valor. No estoy seguro de que ninguno de nosotros tenga un muy buen apoyo para nuestra posición.
¿Es este un conflicto religioso que no se puede resolver, o hay buenas razones objetivas de ingeniería de software en cualquier dirección?
Nota: La cuestión de principio permanece independientemente de los detalles de implementación del lenguaje particular. En JavaScript, por ejemplo, donde la lista de argumentos es siempre dinámica, los parámetros pueden considerarse como azúcar sintáctica para la inicialización de variables locales desde el argumentsobjeto. Aun así, uno podría tratar los identificadores declarados por parámetros como "especiales" porque aún capturan el paso de información de la persona que llama a la persona que llama.