Namensgebung „Kapseln von Funktionen“ = Oberfunktion?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
liil92
User
Beiträge: 8
Registriert: Mittwoch 30. Dezember 2020, 14:05

Guten Morgen allerseits ^^

Ich habe eine Frage bezüglich der Namensgebung von Funktionen.

Ich habe eine Funktion in der ich andere Funktionen Aufrufe. Da ich gerade an der Dokumentation des Code bin, frage ich mich wie ich die aufrufende Funktion in der Dokumentation nennen kann.

Bisher heißt sie Oberfunktion und die aufgerufenen Funktionen in ihr Unterfunktionen. Klingt aber nicht besonders Wissenschaftlich. Wenn jemand zufälligerweise ein Buch hat, in dem die Namensgebung stattfindet, dann gerne her damit:)

Grüße
Liil
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wie wäre es mit Hilfsfunktionen (Helper functions)?

Und die aufrufende Funktion wäre die Calling function.
Benutzeravatar
__blackjack__
User
Beiträge: 13067
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Nur wenn es eine Hilfsfunktion ist. Frag mich nicht nach einer klaren Abgrenzung, aber bei einer Menüfunktion die auf verschiedene Funktionen dispatched wo dann die Funktionalität hinterlegt ist, würde ich keine der beteiligten Funktionen als „Hilfsfunktion“ beschreiben. Das würde ich auf kleine Funktionen beschränken die nicht wirklich spezifisch nur für das aktuelle Programm sinnvoll sind, oder solche die in anderen Kontexten eher nicht sinnvoll sind. Also zum Beispiel die, bei denen man sich ärgert, dass man das nicht als ``lambda``-Ausdruck hinbekommt, und überlegt ob man die nicht doch lokal in der Funktion definiert, in der sie dann auch nur verwendet wird. Hilfsfunktionen sind das was in der Regel in `utils`-Modulen landen.

@liil92: In welchem Kontext brauchst Du diese Namensgebung denn? So ganz allgemein wird von „aufrufender Funktion“ und „aufgerufener Funktion“ gesprochen wenn man man von zwei Funktionen reden möchte von denen die eine die andere aufruft. Diese Namensgebung funktioniert auf jeder Ebene, jede Funktion kann je nach Aufrufkontext beides sein, und rekursive Funktionen können gleichzeitig beides sein.

Mit „Unter…“ ist mir eher „Unterprogramm“ oder „Unterroutine“ bekannt. Da gibt es aber kein „Oberprogramm“ sondern nur ein „Hauptprogramm“, also auch keine Nomenklatur wenn Unterprogramme andere Unterprogramme aufrufen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
__blackjack__
User
Beiträge: 13067
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Mir ist jetzt erst der Betreff aufgefallen: „Kapseln von Funktionen“ ist noch mal was anderes — darunter würde ich Closures verstehen, nicht verschachtelte Funktionsaufrufe.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
liil92
User
Beiträge: 8
Registriert: Mittwoch 30. Dezember 2020, 14:05

Hallo Blackjack,

ich korrigiere gerade meine BA und da ist mir dieses Wort aufgefallen. In meinen Augen (Ohren) klingt es sehr Stumpf.

Hilfefunktionen sind es auch nicht. Eher würde ich da auf den Namen Unterprogramm gehen.

Im allgemeinen wird eine Funktion per Thread gestartet. In der Funktion werden wiederum weitere Funktionen zur Bearbeitung des Sachverhalts aufgerufen.

Grüße
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

liil92 hat geschrieben: Samstag 17. Juli 2021, 17:23 In der Funktion werden wiederum weitere Funktionen zur Bearbeitung des Sachverhalts aufgerufen.
Das ist ja das normale Wesen einer Funktion. Seiteneffektfrei sollte es der Funktion auch egal sein, von wo aus der Aufruf erfolgte. Von daher sollte eine Unterscheidung in "Ober-" und "Unterfunktion" weder erforderlich noch sinnvoll sein. Im Gegenteil: ich würde es sogar für einen Entwurfsfehler halten.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1016
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Oft werden sich wiederholende Code-Teile in Funktionen ausgelagert, die dann wiederum durch andere Funktionen/Methoden aufgerufen werden.

Im Code könnte das dann so aussehen: https://github.com/python/cpython/blob/ ... lib.py#L38

Die Funktion _ignore_error ist auch eine Art Helfer-Funktion, die von anderen Funktionen aufgerufen wird.
Der führende Unterstrich markiert, dass die Funktion privat ist.

Für den Programmierer heißt das, dass er die Funktion, wenn möglich, nicht nutzen sollte.
Es gibt aber auch Helfer-Funktionen, die sehr wohl verwendet werden dürfen/sollen. Die fangen dann aber nicht mit einem Unterstrich an.
Oftmals merkt man auch nur, dass es Helfer-Funktionen sind, weil sie sich z.B. in einem Modul namens utils oder helper befinden.

Eine klare Definition von Helfer-Funktionen kenne ich nicht.
Nur die wichtige Aussage, dass Funktionen keine Seiteneffekte haben sollten.
Ein Seiteneffekt hat z.B. die print-Funktion. Es wird etwas im Terminal ausgegeben.
Löschen einer Datei -> Funktion hat einen Seiteneffekt.
Ein anderer Seiteneffekt wäre z.B., wenn eine an die Funktion übergebene Liste durch die Funktion verändert wird: random.shuffle

Eine Funktion ohne Seiteneffekte liefert ein Ergebnis (kann auch Nonne sein) zurück, ohne außerhalb der Funktion irgendwas zu verändern.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten