early return?



  • frenki schrieb:

    ...dass jede Funktion auch nur am Ende eine Exception werfen darf.

    werfen muss.
    🙂



  • die moeglichkeit die wahrscheinlicher true ist.



  • Bin ich an C++ gebunden oder ist das eine allgemeine Frage? Bei einer allgemeinen Frage wähle ich c) die monadische Variante.



  • Wenn man mal weiß warum es die Idee einer Single-Entry-Single-Exit Funktion gibt, dann sollte man wissen wann sie sinn macht und wann nicht. In C++ macht es zB nie sinn (genauso in java oder c#). in C dagegen schon.



  • Helium schrieb:

    Bin ich an C++ gebunden oder ist das eine allgemeine Frage? Bei einer allgemeinen Frage wähle ich c) die monadische Variante.

    Wäre gut, wenn du auch sagen würdest, was das ist.



  • Shade Of Mine schrieb:

    Wenn man mal weiß warum es die Idee einer Single-Entry-Single-Exit Funktion gibt, dann sollte man wissen wann sie sinn macht und wann nicht. In C++ macht es zB nie sinn (genauso in java oder c#). in C dagegen schon.

    Warum? Also gerade in C kann man durch geschicktes initialisieren, überprüfen und vorzeitiges freigeben und beenden ja eine Menge an Code-Komplexität in Verbindung mit dynamischem Speicher vermeiden.



  • Worauf Shade hinaus wollte, ist wohl, daß in Exceptionhaltigem Code jede Menge versteckte Austrittspunkte enthalten sind. Single-Exit wird da eher schwierig, egal wo du dein return hinschreibst.



  • Shade Of Mine schrieb:

    Wenn man mal weiß warum es die Idee einer Single-Entry-Single-Exit Funktion gibt, dann sollte man wissen wann sie sinn macht und wann nicht.

    dann erklär doch bitte mal, wann sie sinn macht.
    🙂



  • wenn man code hat der immer beim exit ausgeführt werden muss, zB cleanup code. in c++ und java hat man das problem aber nicht da man für solche fälle destruktoren bzw. finally hat...



  • Shade Of Mine schrieb:

    wenn man code hat der immer beim exit ausgeführt werden muss, zB cleanup code.

    das ist selbstverständlich. aber das 'return' muss nicht die letze anweisung im code (als höchste zeilennummer) sein, wie manche behaupten.
    🙂



  • -fricky- schrieb:

    Shade Of Mine schrieb:

    wenn man code hat der immer beim exit ausgeführt werden muss, zB cleanup code.

    das ist selbstverständlich. aber das 'return' muss nicht die letze anweisung im code (als höchste zeilennummer) sein, wie manche behaupten.
    🙂

    single-entry-single-exit sagt nicht dass du das return ganz unten haben musst. es muss am ende des control flows stehen, wenn du rum goto-en willst, bitte.



  • -fricky- schrieb:

    hustbaer schrieb:

    In dem speziellen Beispiel allerdings noch lieber eine Variante mit einem Wrapper um getFoo() der brav eine Exception wirft wenn das Objekt nicht verfügbar ist.

    das ist ja mal wieder typisch Java/C#-programmierer

    Das ist mal typisch blödes Kommentar. Und stimmt auch nicht. Ich komme von der C++ Seite, hab mit Java noch garnix und mit C# erst sehr wenig gemacht. Und habe auch nicht vor auf C# oder Java zu wechseln, da mir gewisse Dinge da einfach nicht zusagen.

    Fehler sollten dort behandelt werden wo sie auftreten bzw. erkannt werden, nicht an 10000 Stellen die halt irgendeine Funktion aufrufen wo irgendwas schief gehen könnte. Kann ich gleich C programmieren wenn ich so gerne "if" schreibe.


Anmelden zum Antworten