Existem argumentos de engenharia de software objetivos e compatíveis a favor ou contra a modificação dos valores dos parâmetros por valor no corpo de uma função?
Uma briga recorrente (principalmente de boa diversão) na minha equipe é se os parâmetros passados por valor devem ou não ser modificados. Alguns membros da equipe são inflexíveis aos quais os parâmetros nunca devem ser atribuídos, para que o valor passado originalmente para a função possa sempre ser interrogado. Não concordo e afirmo que os parâmetros nada mais são do que variáveis locais inicializadas pela sintaxe de chamar o método; se o valor original de um parâmetro por valor for importante, uma variável local poderá ser declarada para armazenar explicitamente esse valor. Não estou confiante de que um de nós tenha um apoio muito bom à nossa posição.
Esse é um conflito religioso não resolvível ou existem boas razões objetivas de engenharia de software em qualquer direção?
Nota: A questão do princípio permanece independentemente dos detalhes de implementação do idioma específico. Em JavaScript, por exemplo, onde a lista de argumentos é sempre dinâmica, os parâmetros podem ser considerados como açúcar sintático para a inicialização da variável local a partir do arguments
objeto. Mesmo assim, pode-se tratar os identificadores declarados por parâmetros como "especiais" porque eles ainda capturam a passagem de informações do chamador para o chamado.