HeadlinesBriefing favicon HeadlinesBriefing.com

Funktionsargumente vs. Farben

Hacker News •
×

In Debatten über Funktionsfarben argumentieren einige, dass Funktionsargumente Farben sein können, und zitieren Go's Kontextwert als Beispiel. Kontext verwaltet Timeouts und Abbruch und ist dafür ausgelegt, durch Funktionen gefädelt zu werden, auch wenn er nicht direkt verwendet wird. Sobald eine Funktion Kontext verwendet, sollten Sie ihn an alle aufgerufenen Funktionen weitergeben, was oberflächlich wie eine Farbe erscheint.

Wenn jedoch alle Parameter Farben wären, wäre das Konzept nicht 50+ Jahre nach Funktionen erfunden worden. Async hat eine eigene Natur, die es wert ist, festgehalten zu werden. Zur Klärung betrachten Sie einen Änderungsabhängigkeitsgraphen: Das Ändern eines Funktionsattributs tief in einem Aufrufstapel kann Aufrufer auf drei Arten beeinflussen: keine Aufruferänderung, direkte Aufruferänderung oder Änderung aller Funktionen im Stapel.

Eine Farbe zwingt alle darüberliegenden Funktionen zu reagieren, während eine normale Änderung nur zum Aufrufer propagiert und abgefangen werden kann. In der Praxis brechen Funktionen die Kette und isolieren höhere Funktionen von niedrigeren Änderungen. Strukturierte Programmierung existiert, um Änderungen zu isolieren, und wenn jede Parameteränderung Änderungen im gesamten Stapel erzwingen würde, wäre das unhandhabbar.