Regra
Não substituir função argumentos.
Reatribuir argumentos de função parâmetros pode confundir
quem chama e tornar a depuração difícil.
Idiomas suportados: 45+Introdução
A reatribuição de parâmetros de função altera o valor dos argumentos dentro da função, tornando pouco claro o valor que o parâmetro possui num determinado momento. Ao depurar, não se pode confiar que um parâmetro ainda contém o valor passado pelo chamador. Isso cria confusão para quem lê o código e dificulta o rastreamento de bugs porque o valor do parâmetro muda durante a execução.
Exemplos de código
Não conforme:
function processUser(user) {
if (!user) {
user = { id: null, name: 'Guest' };
}
user = { ...user, processedAt: Date.now() };
if (user.age < 18) {
user = { ...user, restricted: true };
}
return user;
}Porque é que é errado: O utilizador é reatribuído várias vezes, tornando impossível saber o que o chamador original passou sem ler a função inteira. A depuração mostra os valores modificados, não a entrada real, tornando difícil rastrear os problemas até a fonte.
Conformidade:
function processUser(user) {
const currentUser = user || { id: null, name: 'Guest' };
const processedUser = {
...currentUser,
processedAt: Date.now()
};
if (currentUser.age < 18) {
return { ...processedUser, restricted: true };
}
return processedUser;
}
Porque é que isto é importante: Novas variáveis (utilizador atual, processadoUsuário) mantêm valores intermédios, enquanto o original utilizador permanece inalterado. Os depuradores mostram o valor real de entrada e o código rastreia claramente as transformações através de variáveis nomeadas.
Conclusão
Utilize novas variáveis para transformações em vez de reatribuir parâmetros. Isto torna o fluxo de dados explícito e preserva a entrada original para depuração. A ligeira verbosidade das declarações de variáveis extra é compensada pela melhoria da legibilidade e da depuração.
.avif)
