Ich bin mit dieser Antwort vielleicht etwas spät dran, aber ich habe nach Meinungen anderer Entwickler zu diesem Thema gesucht und bin auf diesen Thread gestoßen.
Ich bin mit den meisten Antwortenden nicht einverstanden und stehe dem Ansatz der „Mehrfachargumente“ gegenüber. Mein Hauptargument ist, dass es andere Anti-Muster wie "Mutieren und Zurückgeben des Parameterobjekts" oder "Weitergeben des gleichen Parameterobjekts an andere Funktionen" entmutigt. Ich habe in Codebasen gearbeitet, die dieses Anti-Pattern ausgiebig missbraucht haben, und das Debuggen von Code, der dies tut, wird schnell unmöglich. Ich denke, dies ist eine sehr Javascript-spezifische Faustregel, da Javascript nicht stark typisiert ist und solche willkürlich strukturierten Objekte zulässt.
Meine persönliche Meinung ist, dass Entwickler beim Aufrufen von Funktionen explizit sein sollten, redundante Daten nicht weitergeben und Änderungen durch Verweise vermeiden sollten. Es ist nicht so, dass dieses Muster das Schreiben von präzisem, korrektem Code ausschließt. Ich habe nur das Gefühl, dass es für Ihr Projekt viel einfacher ist, in schlechte Entwicklungspraktiken zu verfallen.
Betrachten Sie den folgenden schrecklichen Code:
function main() {
const x = foo({
param1: "something",
param2: "something else",
param3: "more variables"
});
return x;
}
function foo(params) {
params.param1 = "Something new";
bar(params);
return params;
}
function bar(params) {
params.param2 = "Something else entirely";
const y = baz(params);
return params.param2;
}
function baz(params) {
params.params3 = "Changed my mind";
return params;
}
Diese Art erfordert nicht nur eine explizitere Dokumentation, um die Absicht zu spezifizieren, sondern lässt auch Raum für vage Fehler. Was passiert , wenn ein Entwickler ändert param1
inbar()
? Wie lange würde es Ihrer Meinung nach dauern, eine Codebasis von ausreichender Größe zu durchsuchen, um dies zu erfassen? Zugegeben, dieses Beispiel ist etwas unaufrichtig, da davon ausgegangen wird, dass Entwickler zu diesem Zeitpunkt bereits mehrere Anti-Patterns begangen haben. Es zeigt jedoch, wie das Übergeben von Objekten, die Parameter enthalten, mehr Raum für Fehler und Mehrdeutigkeiten bietet und ein höheres Maß an Gewissenhaftigkeit und die Einhaltung der Konstantenkorrektheit erfordert.
Nur meine zwei Cent zu diesem Thema!