Frage zu Verzweigungen



  • Hi

    Welche der folgenden Lösungen würdet ihr vorziehen?

    Thread * thread;
    
    //...
    
    //#1 (in cpp)
    
    bool foo::isThreadRunning()
    {
     if( !thread ) return false;
    
     return thread->isRunning();
    }
    //Würde ich als "am sichersten" bezeichnen weil es sehr übersichtlich ist und keine Missverständnisse auftreten können
    
    //#2 (in header)
    
    bool isThreadRunning(){ return thread ? thread->isRunning() : false; }
    //Sehr kurz, wird bei langen Befehlen aber unübersichtlich und ist meiner Meinung nach nicht so gut zu warten.
    
    //#3 (in header)
    bool isThreadRunning(){ return thread && thread->isRunning(); }
    //Am kürzesten aber imo trotzdem übersichtlicher als #2.
    //Für jemanden der sich nicht so gut auskennt allerdings vielleicht schwerer nachzuvollziehen.
    

    Was sagt der Standard zu #3?

    Muss bei && die Auswertung abgebrochen werden wenn das erste Argument false ergibt oder sollte das nur passieren?
    Kann jemand eine Aussage über die Praxis treffen (unterschiedliche Compiler, Einstellungen etc.) ?

    mfg stumpf



  • resu schrieb:

    bool isThreadRunning(){ return thread && thread->isRunning(); }
    //Am kürzesten aber imo trotzdem übersichtlicher als #2.
    //Für jemanden der sich nicht so gut auskennt allerdings vielleicht schwerer nachzuvollziehen.
    [/cpp]
    Was sagt der Standard zu #3?

    Muss bei && die Auswertung abgebrochen werden wenn das erste Argument false ergibt oder sollte das nur passieren?
    Kann jemand eine Aussage über die Praxis treffen (unterschiedliche Compiler, Einstellungen etc.) ?

    mfg stumpf

    Wenn das erste Statment false ist, wird sofort aus der Verzweigung rausgegangen.



  • resu schrieb:

    Kann jemand eine Aussage über die Praxis treffen (unterschiedliche Compiler, Einstellungen etc.) ?

    Scheißegal



  • ich persönlich würde nummer drei nehmen. der vorteil dabei ist, dass die vorschrift zur berechnung des rückgabewertes direkt im code sichtbar ist.


Anmelden zum Antworten