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.