Reihenfolge der Auswertung von Funktionen, deren return-Wert als Parameter übergeben wird



  • ...Hier stand Blödsinn...



  • hustbaer schrieb:

    Ich kann mir gerade nix vorstellen wo man drüberstolpern könnte, was nicht gleichzeitig unsauberer Code wäre.

    Kannst du mir ein Beispiel geben?

    Wenn ich weiss, dass die Argumente von links nach rechts abgearbeitet werden, dann ist für mich folgendes nicht unsauber:

    f(aendereMemberVariableX(), nutzeMemberVariableX());
    

    Edit: Naja gut, wenn ich mir das so ansehe...schön ist das wirklich nicht.
    Edit2: Nee, ich nehme mein letztes Edit zurück 😉
    Das sieht halt für uns doof aus, aber wenn ich nur Java/C# machen würde, würde ich sowas bestimmt auch wirklich machen:
    Also

    c(f1(), f2());
    

    statt

    a = f1();
    b = f2();
    c(a,b);
    


  • Jockelx schrieb:

    Wenn ich weiss, dass die Argumente von links nach rechts abgearbeitet werden, dann ist für mich folgendes nicht unsauber:

    Was man für unsauber hält, ist ja auch Ergebnis einer Prägung durch das eigene Umfeld. Eingefleischte C-ler oder Pascaller halten es z.B. für unsauber, Variablen nicht am Blockanfang zu deklarieren.


  • Mod

    Das eigentlich unsaubere ist aber, dass man Funktionen mit Nebeneffekten hat. Hier liegt die Wurzel des Übels. Egal in welcher Sprache.



  • Bashar schrieb:

    Was man für unsauber hält, ist ja auch Ergebnis einer Prägung

    Genau das habe ich gesagt: Kann für Leute anderer Prägung ein Stolperstein sein.
    Und den Nutzen finde ich jetzt nicht so riesig, als dass ich das als uneingeschränkt 'besser' ansehen würde.


Anmelden zum Antworten