Ist es besser, Methoden zu schreiben, die keine Argumente annehmen und Nebenwirkungen haben, den Objektstatus ändern, oder Ein-Argument-Methoden, die ein Argument nehmen und es verarbeiten? Wenn die zweite Alternative vorzuziehen ist, ist es besser, das Eingabeargument explizit zurückzugeben oder es nur zu verarbeiten, da der Aufrufer einen Verweis darauf haben soll.Eingabe-Ausgabe-Argumente vs. keine Argumente mit Nebenwirkungen
Um genauer zu sein: Ich verarbeite XML und habe die ersten Kapitel der Clean Code book gelesen Ich versuche, die Big Processing-Methode in viele kleine zu teilen, so dass diese Methode wie eine Geschichte in den Zeilen gelesen werden kann :
cleanHeader();
extractMetaInfo();
appendStuff();
und so weiter, wo diese Methoden auf dem XML-Dokument alle als Mitglied gespeichert arbeiten.
IMHO scheinen sich hier die Best Practices zur Reduzierung der Parameteranzahl vs. keine Nebenwirkungen zu widersprechen. Wäre es besser, wie folgt zu schreiben?
doc = cleanHeader(doc);
doc = extractMetaInfo(doc);
doc = appendStuff(doc);
Gibt es ein bestimmtes "Recht" zu diesem Thema? Wie viel mehr Kontexte würde eine bestimmte Antwort abhängen? Oder gibt es eine dritte Alternative, an die ich nicht gedacht habe?
EDIT: gefunden related question mit widersprüchlichen Antworten. Pflege um zu erarbeiten?
Nebenwirkungen ist die Mutter allen Übels. Nicht mal näher kommt. – leppie
danke, leppie. das war ziemlich eindeutig :) und scheint sehr plausibel. Könnten Sie bitte einen Link/andere Informationen zur Verfügung stellen, um Ihr Urteil zu unterstützen? wäre es besser, das ursprüngliche Argument zurückzugeben oder es "Funktionsstil" zu ändern, d. implizit? – kostja
Ich empfehle dringend, das Buch zu lesen: "Effektive Java" von Joshua Bloch - Er stimmt in dieser spezifischen Frage für das Gegenteil (Parameter verwenden). Im Allgemeinen bevorzugt Bloch Staatenlose aus verschiedenen Gründen (Performance und Usability). @ Kostja - Sie könnten es als Referenz für die Aussage von leppie verwenden – Ralph