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
Reatribuir parâmetros de função altera o valor dos argumentos dentro da função, tornando incerto qual valor o parâmetro contém em qualquer ponto. Ao depurar, não é possível 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 a localização de bugs, pois 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;
}Por que está errado: O usuário o parâmetro é reatribuído múltiplas vezes, tornando impossível saber o que o chamador original passou sem ler a função inteira. A depuração mostra valores modificados, não a entrada real, dificultando o rastreamento de problemas até a origem.
✅ Compatível:
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;
}
Por que isso importa: Novas variáveis (Usuário atual, usuário processado) armazenam valores intermediários enquanto o original usuário o parâmetro permanece inalterado. Depuradores mostram o valor de entrada real, e o código rastreia claramente as transformações através de variáveis nomeadas.
Conclusão
Use novas variáveis para transformações em vez de reatribuir parâmetros. Isso torna o fluxo de dados explícito e preserva a entrada original para depuração. A ligeira verbosidade de declarações de variáveis extras é superada pela melhoria na legibilidade e depurabilidade.
.avif)
