mit bool rechnen - Schlechtes Design?



  • FreakY<3Cpp schrieb:

    Komisches compare 😃

    Ist ja nur ein Teil - natürlich wird noch nach anderen Kriterien verglichen...
    Oder meinst du etwas anderes? 😮



  • FreakY<3Cpp schrieb:

    Komisches compare 😃

    Ganz normales Compare. Dreiwertige Rückgabe mitr <0, ==0, >0 ist nicht so unüblich. Siehe strcmp. Ein wenig weiter weg von der STL, aber C ist ja auch was Schönes.

    daersc schrieb:

    Ist ja nur ein Teil - natürlich wird noch nach anderen Kriterien verglichen...

    Das macht mir jetzt ein wenig Angst.



  • volkard schrieb:

    daersc schrieb:

    Ist ja nur ein Teil - natürlich wird noch nach anderen Kriterien verglichen...

    Das macht mir jetzt ein wenig Angst.

    Es ist so, dass zuerst nach dem "vorrangigen" Kriterium verglichen wird. Wenn eine Unterscheidung bereits möglich ist, ist das der Rückgabewert. Wenn nicht, wird das nächste Kriterium herangezogen. Wenn alle Vergleiche kein Ergebnis bringen, liefert die Funktion 0 zurück.

    volkard schrieb:

    Ein wenig weiter weg von der STL, aber C ist ja auch was Schönes.

    Ist das nicht sinnvoll, das die < und == Operatoren nur noch diese Funktion aufrufen müssen? (Die übrigen werden von Boost.Operators erstellt...
    Im Übrigen: http://www.cplusplus.com/reference/string/string/compare/ Weit weg von der STL???



  • Wie ist das mit der Geschwindigkeit, wenn Du den kleinen op< implementierst, indem du die große compare verwendest?
    Sinnvoll ist es wohl, wenn es leicht zu lesen ist und keine Zusatzkosten gegenüber asm hat. Vermutlich solltest Du die ops < und == explizit selber bauen und die anderen kannst Du ja gerne boosteln lassen. DIe beiden erst zusammenzufassen, um sie dann wieder mit if auseinanderzuklamüsern, riecht nach Java, UML, Struktogrammen, Refactoring-Menus und so.



  • volkard schrieb:

    Ganz normales Compare.

    Das natürlich, das Compare von .NET macht das gleiche, aber nicht mit bool, sondern das gibt dann jenachdem -1, 0 oder 1 zurück.



  • FreakY<3Cpp schrieb:

    volkard schrieb:

    Ganz normales Compare.

    Das natürlich, das Compare von .NET macht das gleiche, aber nicht mit bool, sondern das gibt dann jenachdem -1, 0 oder 1 zurück.

    Tut dieses Compare hier ja auch.
    Ich sehe hier nichts komisches, alles vollkommen normal.



  • Naja für mich ist es nunmal unüblich mit bool zu rechnen, auch wenn es geht 😃



  • FreakY<3Cpp schrieb:

    Naja für mich ist es nunmal unüblich mit bool zu rechnen, auch wenn es geht 😃

    ist fuer dich dann auch ein

    int strcmp(char const* a, char const* b) {
      while(*a && *a++==*b++)
        ;
      return *a-*b;
    }
    

    komisch?

    Ich wuerde halt ein:

    if(a<b) return -1;
    else if(a==b) return 0;
    else return 1;
    

    komisch finden 😉



  • Ja finde ich persönlich nicht gerade ansprechend, aber bei solch einem Thema vertritt nunmal jeder seine eigene Ansicht.



  • volkard schrieb:

    Vermutlich solltest Du die ops < und == explizit selber bauen und die anderen kannst Du ja gerne boosteln lassen. DIe beiden erst zusammenzufassen, um sie dann wieder mit if auseinanderzuklamüsern, riecht nach Java, UML, Struktogrammen, Refactoring-Menus und so.

    Sobald die Objekte nicht gleich sind, bricht die Funktion in jedem Fall ab...
    Und was ist mit der Vermeidung der Codeduplizierung? Immerhin sehen beide Op's fast gleich aus...


Anmelden zum Antworten