Regel
darf nicht überschreiben Funktion Argumente.
Neuzuweisung von Funktion Parameter kann verwirren
Aufrufer verwirren und machen. Fehlersuche schwierig.
Unterstützte Sprachen: 45+Einleitung
Das Neuzuweisen von Funktionsparametern ändert den Wert von Argumenten innerhalb der Funktion, wodurch unklar wird, welchen Wert der Parameter zu einem bestimmten Zeitpunkt hat. Beim Debugging können Sie nicht darauf vertrauen, dass ein Parameter immer noch den vom Aufrufer übergebenen Wert enthält. Dies führt zu Verwirrung für jeden, der den Code liest, und erschwert die Fehlersuche, da sich der Wert des Parameters während der Ausführung ändert.
Code-Beispiele
❌ Nicht konform:
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;
}Warum es falsch ist: Der Benutzer Parameter wird mehrfach neu zugewiesen, wodurch es unmöglich wird, zu wissen, was der ursprüngliche Aufrufer übergeben hat, ohne die gesamte Funktion zu lesen. Das Debugging zeigt modifizierte Werte, nicht die tatsächliche Eingabe, was es schwierig macht, Probleme bis zur Quelle zurückzuverfolgen.
✅ Konform:
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;
}
Warum dies wichtig ist: Neue Variablen (currentUser, processedUser) Zwischenwerte speichern, während das Original Benutzer Parameter bleibt unverändert. Debugger zeigen den tatsächlichen Eingabewert, und der Code verfolgt Transformationen klar durch benannte Variablen.
Fazit
Verwenden Sie neue Variablen für Transformationen, anstatt Parameter neu zuzuweisen. Dies macht den Datenfluss explizit und bewahrt die ursprüngliche Eingabe für das Debugging. Die leichte Ausführlichkeit zusätzlicher Variablendeklarationen wird durch verbesserte Lesbarkeit und Debugging-Fähigkeit aufgewogen.
.avif)
