Programmier Stil Frage



  • Wird hier etwa schon die Einrückung kritisiert? Wenn wir schon beim Unwichtigen sind, wieso nicht noch das ==0 ?

    Das Problem ist, dass du den Rückgabewert nutzt um einen Fehler festzustellen. Das macht man in C++ nicht und schon gar nicht 4 mal hintereinander.
    Für das gibt es ein Sprachmittel, das sich Exceptions nennt.



  • Also, ich würde es gleich so machen (wenn man jetzt nur die Einrückung u.ä. verändert):

    if(!foo_1 ( ))
        cout << "error in foo_1\n";
    
    if(!foo_2( ))
        cout << "error in foo_2\n";
    
    if(!foo_3( ))
        cout << "error in foo_3\n";
    
    if(!foo_4( ))
        cout << "error in foo_4\n";
    

    (Hab das endl mal weggemacht).

    Generell gilt: Variablen überhaupt erst deklarieren, wenn man sie zum lesbarer-machen des Codes oder zur Wiederverwendung benötigt.
    In deinem Beispiel aber benutzt man normalerweise exceptions.



  • da es um stil geht... hier mal eine saubere:

    //Deklarationen immer am Anfang und getrennt soweit möglich
    //d.h. wenn später erst benötigt...
    int ret1 = 0;
    
    int ret1 = foo_1();
    int ret2 = foo_2();
    int ret3 = foo_3();
    int ret4 = foo_4();
    
    // Dann der ganze scheiß
    if (ret1 == 0) {
      cout << "error 1 " << endl;
    }
    
    if (ret1 == 0) {
      cout << "error" << endl;
    }
    
    if (ret == 0) {
      cout << "error 2 " << endl;
    }
    
    if (ret == 0) {
      cout << "error 3" << endl;
    }
    

    Der Beitrag vor diesem ist eher schlechter Programmierstil den ich leider
    trotzdem verfolge ;P

    regel: egal ob nach einem if else while for etc nur eine anweisung kommt
    trotzdem die geschweiften klammern hinknallen



  • errata schrieb:

    Wird hier etwa schon die Einrückung kritisiert? Wenn wir schon beim Unwichtigen sind, wieso nicht noch das ==0 ?

    Das Problem ist, dass du den Rückgabewert nutzt um einen Fehler festzustellen. Das macht man in C++ nicht und schon gar nicht 4 mal hintereinander.
    Für das gibt es ein Sprachmittel, das sich Exceptions nennt.

    Nur weil es in C++ Exceptions gibt heisst das nicht das man sie verwenden muss. Diesen Zwang kenne ich nur von Java und bin persönlich ganz froh das es in C++ kein Zwang ist...



  • realKoala schrieb:

    regel: egal ob nach einem if else while for etc nur eine anweisung kommt
    trotzdem die geschweiften klammern hinknallen

    Das ist die Anfängerregel...

    Ausserdem kompiliert dein Code oben nicht.



  • icarus2 schrieb:

    realKoala schrieb:

    regel: egal ob nach einem if else while for etc nur eine anweisung kommt
    trotzdem die geschweiften klammern hinknallen

    Das ist die Anfängerregel...

    Ausserdem kompiliert dein Code oben nicht.

    muss er auch nicht ^^
    ging ja um stil nicht um lauffähigkeit



  • Wenn man Stilvergleiche anstellt, sollte man das schon mit Codestücken machen, die das gleiche Verhalten an den Tag legen.

    Außerdem ist mangelnde Lauffähigkeit in der Programmierung ziemlich schlechter Stil.



  • Interessant.. Jede(r) macht es anders.



  • schwudde schrieb:

    errata schrieb:

    Wird hier etwa schon die Einrückung kritisiert? Wenn wir schon beim Unwichtigen sind, wieso nicht noch das ==0 ?

    Das Problem ist, dass du den Rückgabewert nutzt um einen Fehler festzustellen. Das macht man in C++ nicht und schon gar nicht 4 mal hintereinander.
    Für das gibt es ein Sprachmittel, das sich Exceptions nennt.

    Nur weil es in C++ Exceptions gibt heisst das nicht das man sie verwenden muss. Diesen Zwang kenne ich nur von Java und bin persönlich ganz froh das es in C++ kein Zwang ist...

    Sind dir Exceptions zu kompliziert oder was? Jeder normale C++-Programmierer würde Exceptions der obigen Methode vorziehen, wenn es Sinn macht (bei manchen Fehltritten muss ja nicht gleich was geworfen werden).



  • Hacker schrieb:

    Sind dir Exceptions zu kompliziert oder was? Jeder normale C++-Programmierer würde Exceptions der obigen Methode vorziehen, wenn es Sinn macht (bei manchen Fehltritten muss ja nicht gleich was geworfen werden).

    Nein sind mir nicht zu kompliziert. Aber wie Du selbst schreibst: wenn es Sinn macht...



  • schwudde schrieb:

    Hacker schrieb:

    Sind dir Exceptions zu kompliziert oder was? Jeder normale C++-Programmierer würde Exceptions der obigen Methode vorziehen, wenn es Sinn macht (bei manchen Fehltritten muss ja nicht gleich was geworfen werden).

    Nein sind mir nicht zu kompliziert. Aber wie Du selbst schreibst: wenn es Sinn macht...

    Es macht oft Sinn.



  • Es hindert einen übrigens auch in Java nichts daran, Integer oder Bools zurückzugeben, statt eine Exception zu werfen. Es ist gelegentlich sogar sinnvoll, das zu tun.



  • realKoala schrieb:

    da es um stil geht... hier mal eine saubere:

    Die sowas von dreckig ist, das ich hoffe das du das nur Ironisch meinst.

    realKoala schrieb:

    //Deklarationen immer am Anfang und getrennt soweit möglich
    //d.h. wenn später erst benötigt...
    

    Diese Aussage ist einfach nur daneben, und wird so eigentlich wenn überhaupt nur noch in alten Büchern gelehrt.

    Deklarationen gehören erst dahin, wo man sie benötigt. Das vereinfacht beispielsweise auch ein Refactoring, da die Abhängigkeiten in der Regel wesentlich näher stehen. Es erlaubt eine bessere funktionelle Trennung...



  • seldon schrieb:

    Es hindert einen übrigens auch in Java nichts daran, Integer oder Bools zurückzugeben, statt eine Exception zu werfen. Es ist gelegentlich sogar sinnvoll, das zu tun.

    Grundsätzlich gibt es Fälle in denen es sinnvoll ist, aber ich würde hier zwischen echten Fehlern und reinen Statusinformationen unterscheiden. Letztere sind imho vor allen dann okay, wenn es kein Fehler darstellt, diese nicht zu überprüfen (Programmierer sind durchaus Schreibfaul und vergessen zudem gerne Statusprüfungen - Wenn wiederum Exceptions fliegen, wird man diese recht schnell versuchen auszumerzen oder zu prüfen ob es eine sinnvolle Behandlung gibt...


Anmelden zum Antworten