if else oder nur if



  • if (function1)
    return 0;
    if (function2)
    return 0;
    if (function3)
    return 0;
    

    versus

    if (function1)
    return 0;
    else if (function2)
    return 0;
    else if (function3)
    return 0;
    

    bringt die erste variante gegenüber der anderen vorteile, außer etwas weniger code? oder andersrum oder ist das wurscht?



  • IMO ist die 2te variante besser da die restlichen elses nicht mehr ausgewertet werden falls irgend eine Bedingung eintritt (z.b. wenn function2 true zurückgibt wird die Bedingung bei function3 übersprungen), dies kann jeddoch nicht immer erwünscht sein.

    P.S.
    in deinem beispiel spielts aber keine rolle denn jede erfüllte bedingung wird die funktion beenden sodass die restlichen bedingungen in beiden fällen nicht ausgewertet werden



  • <- Poster ist blind.



  • Hallo,

    warum sollte der Compiler unterschiedlichen Code erzeugen?

    mfg Martin


  • Mod

    Das ist hier äquivalent. Nimm das, was am besten ausdrückt, was du dir vorstellst.



  • c0ff33.alex schrieb:

    IMO ist die 2te variante besser da die restlichen elses nicht mehr ausgewertet werden falls irgend eine Bedingung eintritt

    Das wäre in einer normalen Situation richtig. Aber hier geht es dem Threadersteller wohl vor allem darum, dass in jedem if-Zweif sowieso ein return kommt, so dass man sich durchaus fragen kann, ob es hier einen Unterschied gibt.



  • Mal ein weiterer Ansatz:

    Für den Fall, dass Du für eine der drei Bedingungen im erfüllten Zustand für irgendwann später eine andere Aktion als das entsprechende return planst:
    Geschweifte Klammern setzen, Einrücken, else if benutzen.

    Dem Compiler ist es wurst, jeder versteht es, aber für spätere Fälle, wohl eher in anderen Programmen, wirst Du Dir selbst danken, nicht über fehlende Klammern oder else-Anweisungen zu stolpern.



  • RETURNNN schrieb:

    c0ff33.alex schrieb:

    IMO ist die 2te variante besser da die restlichen elses nicht mehr ausgewertet werden falls irgend eine Bedingung eintritt

    Das wäre in einer normalen Situation richtig. Aber hier geht es dem Threadersteller wohl vor allem darum, dass in jedem if-Zweif sowieso ein return kommt, so dass man sich durchaus fragen kann, ob es hier einen Unterschied gibt.

    siehe post scriptum 😉



  • if(function1 || function2 || function3)
      return 0;
    

Log in to reply