Auswertungsreihenfolge bie return
-
berniebutt schrieb:
Der Returnwert einer Funktion ist ein festgelegter Datentyp, z.B ein int, ein Zeiger, oder eine Struktur. Deshalb führe ich wenn zweckmässig eine lokale Grösse für diesen Datentyp ein, die ich in der Funktion sicher prüfen kann, wo sie bestimmt wird. Jedenfalls übergebe ich im return ungarn mir unklare Ausdrücke.
Mag sein, dass dieser Vorschlag nicht jedem gefällt. Kostet aber kaum Performance und Speicherbedarf. Der Fragesteller wusste nicht, wie der Ausdruck abgearbeitet wird und ob das wie sogar compilerabhängig sein kann.
Mein bewährter Weg: Alle Funktionalität geprüft in der Funktion erledigen und für einen eindeutigen sicheren Rückgabewert sorgen. Wenn das in Ordnung ist, kann man die Internas der Funktion für eine Weile vergessen!
Idealer Name rtn? Mir egal, da bin ich schreibfaul! Wäre nach ungarischer Notation intReturn besser??
Das klingt etwas zu stark nach C des vergangenen Jahrhunderts.
-
volkard schrieb:
Das klingt etwas zu stark nach C des vergangenen Jahrhunderts.
Vergangenes Jahrhundert? Da hat man doch mit Assembler, ALGOL, FORTRAN, PL1 ... und auch C auf Dampfrechnern herumgeturnt - Igitt! Wegen hier kritisiertem Ansatz zur Steinzeitprogrammierung kein Thema für mich. Ist zu einfach und nachlesbar. Wieso dann solche Fragen, wenn C++ und OOP alles so leicht macht? daddeldu! :p
-
Welcher Wert zurückgegeben wird kann man im Debugger auch ohne Hilfsvariable nachgucken.
"rtn" als Name ist schlecht, weils total unüblich ist, nicht aussprechbar und nicht sprechend.
Wenn schon nen nichtssagenden Namen, dann wenigstens sowas wie "rc" oder "value".
-
hustbaer schrieb:
Wenn schon nen nichtssagenden Namen, dann wenigstens sowas wie "rc" oder "value".
rc habe ich noch nie gesehen. Wofuer steht das?
val, ret, res - sind die Sachen die ich frueher oefters gesehen habe.
-
Hm. Dann habe ich die Häufigkeit/Geläufigkeit von "rc" wohl etwas überbewertet

"rc" steht für "return code".Verwende ich auch nur für Fälle wo es eben ein "return code" ist, also ein success/error Code o.ä.
Wenns dagegen ein anderer Wert ist (String-Länge, Koordinate, Anzahl von irgendwas etc.) ist "rc" natürlich auch nicht gut.
-
also rtn ist schlecht, weil es in modernem Spaß-C rtrn heißen müßte (Einfach alle Vokale weglassen! Das gibt wenigstens eine Fehlererkennungshilfe.) Und weil man ja überhaupt keinen return returnen will ist es oberschlecht. Auch vom Sinn her nicht erschließbar. Oder nennt Ihr Eure Variablen nach Schlüsselwörtern, die gerade irgendwas mit dem Zweck zu tun haben? fr statt i und whl statt isRunning? Aber schön traditionell auf drei Zeichen pro Bedeutungsinhalt gekürzt. Helau.

Sondern erträglich wären einen vl oder rtrnvl oder ein rslt. Ach, dann kann man das rslt doch gleich auch result nennen. Schade, daß man das überhaupt noch sagen muß.
-
result nehm ich manchmal dafür.
hustbaer schrieb:
Welcher Wert zurückgegeben wird kann man im Debugger auch ohne Hilfsvariable nachgucken.
In welchem Debugger und wie? Beim MSVC geht es m.W. nicht. Ich bin jemand, der sich davon nicht den Stil diktieren lässt, aber einige Kollegen definieren genau deshalb grundsätzlich Variablen, die sie dann zurückgeben.
-
Bashar schrieb:
In welchem Debugger und wie? Beim MSVC geht es m.W. nicht.
Sobald die Funktion verlassen wurde stehen im MSVC bei den "Autos" die Werte, die die gerade aufgerufenen Funktionen zurückgegeben haben.
-
Bashar schrieb:
result nehm ich manchmal dafür.
hustbaer schrieb:
Welcher Wert zurückgegeben wird kann man im Debugger auch ohne Hilfsvariable nachgucken.
In welchem Debugger und wie? Beim MSVC geht es m.W. nicht. Ich bin jemand, der sich davon nicht den Stil diktieren lässt, aber einige Kollegen definieren genau deshalb grundsätzlich Variablen, die sie dann zurückgeben.
Einen Debugger verwende ich selten. Stattdessen benutze ich lieber Logfiles, die ich mir in Ruhe ansehen kann. Und genau dafür brauche auch ich Variable als Rückgabe einer Funktion. result kommt da manchmal auch vor. Ist alles nun auch wieder ein Programmierstil des vergangenen Jahrhunderts. Dafür übersichtlich und beim Testen (jedenfalls für mich) effizient.
Die Frage, in welcher Reihenfolge etwas abgearbeitet wird, kann man nachlesen oder im Ergebnis (in der Funktion!) ausprobieren. Suchen und Lesen ist manchmal aufwendiger als Probieren, nur verstanden hat man damit wenig! Die Reihenfolge für C/C++ liegt doch fest. Das war bei Mixed-Programming MASM/FORTRAN/PASCAL/C für den Stack einmal anders und etwas schwieriger zu handhaben.
Der Steinzeitprogrammierer verabschiedet sich nun endgültig aus diesem Thema.

-
pumuckl schrieb:
Sobald die Funktion verlassen wurde stehen im MSVC bei den "Autos" die Werte, die die gerade aufgerufenen Funktionen zurückgegeben haben.
Das stimmt zwar, aber man kann sie bei strukturierten Typen nicht aufklappen.