Ich habe einmal gelesen, dass eine Methode entweder einen Rückgabewert haben sollte (und referenziell transparent sein sollte) oder Nebenwirkungen haben sollte, aber nicht beides. Ich kann keine Verweise auf diese Regel finden, möchte aber mehr darüber erfahren.
Woher stammt dieser Rat? Aus welcher Person oder Gemeinschaft ist es entstanden?
Zusätzliche Gutschrift: Welche Vorteile ergeben sich aus der Befolgung dieses Hinweises?
language-agnostic
history
side-effect
pure-function
Wayne Conrad
quelle
quelle
Antworten:
Laut Greg Young stammt diese Idee von Bertrand Meyer : Trennung von Befehlen und Abfragen .
Im domänengetriebenen Design ähnelt dies der von Greg Young genannten Trennung / Segregation (Command-Query-Read Separation / Segregation, CQRS).
Greg Young übernahm die Idee von CQS von Bertrand, um CQRS zu benennen, wie dies von Martin Fowler in diesem CQRS-Artikel erwähnt wurde
Leistungen
Lesen Sie den Artikel im Martin Fowler Link für mehr.
quelle
Ich weiß nicht, woher es kommt, aber es ist ein guter Rat und ziemlich einfach zu verstehen.
Jedes sorgfältig gestaltete Programm wird in verschiedene Teile zerlegt, kombiniert und auf verschiedene Arten komponiert. Je schwieriger es ist zu überlegen, was ein bestimmtes Teil tut, desto schwieriger wird es, sicherzustellen, dass Ihr Programm auf vorhersehbare Weise reagiert.
Das Isolieren der Teile, die Nebenwirkungen hervorrufen, erleichtert das Überlegen, Testen und Debuggen des Rests. Wenn Sie die Anzahl der Nebenwirkungen in jedem Teil reduzieren, die Nebenwirkungen hervorrufen, können Sie mit diesem Teil auf die gleiche Weise leichter arbeiten.
Wenn Sie es noch weiter zerlegen, ist ein Rückgabewert ein Effekt. Nebenwirkungen sind ein Effekt. Eine Funktion sollte nur einen Effekt erzeugen (wenn möglich), da es umso schwieriger ist, zu überlegen, was sie tatsächlich tut, je mehr Eingänge und Effekte eine Funktion hat.
quelle
Einer der Vorteile der Trennung von Rückgabewert und Nebenwirkungen besteht darin, dass ein potenzielles Problem behoben wird, das durch die Kurzschlussbewertung verursacht werden kann .
quelle