Wo ist der Unterschied/Was ist besser?

  • C++

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Wo ist der Unterschied/Was ist besser?

    Hallo,
    da ich aktuell an einem C++ Projekt arbeite (aktuell am Core), habe ich diesbezüglich eine Frage. Ich habe folgenden Code:

    Quellcode

    1. QString EinTest::returnSomething()
    2. {
    3. QString x = getX("hello");
    4. return x;
    5. }

    Dieser wäre kürzer mit:

    Quellcode

    1. QString EinTest::returnSomething()
    2. {
    3. return getX("hello");
    4. }

    Jetzt zu meiner Frage, und zwar wo liegt hier der Unterschied bzw. was ist besser und warum? Gibt es dazu was zu beachten?

    Grüße,
    Jan
    Software being "Done" is like lawn being "Mowed". (Jim Benson)

    KidRick schrieb:

    was ist besser und warum?
    Das ist beides äquivalent.
    Bei der 1. Variante wird im Debug eine lokale Variable angelegt und wieder beräumt, bei der 2. geht rer RetVal gleich raus, das könnte einen Milli-Hauch schneller gehen.
    Bei der 1. Variante kannst Du einen Haltepunkt reinsetzen und dir den RetVal ansehen, nachdem die Funktion zurückgekehrt ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich würde eher die zweite Variante nehmen, weil das kürzer und direkter ist. Wenn man dann einen Haltepunkt setzen muss, baut man das temporär auf die erste Variante um.
    Mit freundlichen Grüßen,
    Thunderbolt
    ich denke, mal wieder ein Fall von pauschal nicht beantwortbar. Jedenfalls im allgemeinen.
    Konkret natürlich Variante#2 - für so pillepalle sollte man keinesfalls eine zusätzliche Variable einführen.

    Generell kanns aber auch sinnvoll sein, längere Ausdrücke durch Zwischenvariablen bischen zu entzerren, sodasses evtl. leichter zu lesen oder zu debuggen ist.

    Also ich mach ja selbst recht gerne so Bandwürmer:

    VB.NET-Quellcode

    1. Return String.Join(Path.DirectorySeparatorChar, Array.ConvertAll(pathSegments, Function(s) s.Trim(Path.DirectorySeparatorChar)))
    Aber ich weiss schon, dass

    VB.NET-Quellcode

    1. Dim trimmedSegments = Array.ConvertAll(pathSegments, Function(s) s.Trim(Path.DirectorySeparatorChar))
    2. Return String.Join(Path.DirectorySeparatorChar, trimmedSegments)
    eiglich lesbarer wäre. ;)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @ErfinderDesRades
    Die Frage ist entstanden aufgrund solcher Bandwürmer weil das dann teilweise ziemlich komisch und auch nicht lesbar aussieht ;) Deshalb wollte ich wissen ob es irgendwie einen Unterschied dazwischen gibt (Performance etc.) Aber des hat sich ja alles schon geklärt ^^
    Software being "Done" is like lawn being "Mowed". (Jim Benson)

    KidRick schrieb:

    Die Frage ist entstanden aufgrund solcher Bandwürmer weil...
    Na toll!

    Mal wieder die Frage so gestellt, dass man auf keinen Fall verstehen kann, wie sie eiglich gemeint ist.

    Wieso bringst du kein Bandwurm-Beispiel, sondern ein Nonsense-Beispiel, wenn sich die Frage um Bandwürmer dreht?
    Weil das immer unterschiedlich ist, manchmal so kurze Dinger und dann so Bandwürmer. Deshalb wollte ich wissen ob ich da was bedenken muss.
    Software being "Done" is like lawn being "Mowed". (Jim Benson)
    also Performance ist hier mal wieder irrelevant.
    relevant ist Lesbarkeit und Sicherheit.
    Viele Variablen sind tendenziell ein Unsicherheitsfaktor, denn sie könnten theoretisch auch andernorts manipuliert werden, oder einander abschattieren.
    Bei lokalen Vars nicht sooo gravierend, v.a., wenn man sie nicht alle gleich mit i benennt.
    Lesbarkeit ist Geschmacksache, ich glaub, je mehr Erfahrung man hat, desto leichter lesen sich auch längere Zeilen (aber übertreiben kann mans immer).
    Und lesen andere mit, dann vlt. eher einen Gang runterschalten.