Vorzeitiges Verlassen von Schleifen



  • Hallo zusammen,

    in einem Programmierkurs hat mein Dozent gesagt, dass Verwendung von break-Keywords und somit vorzeitiges Verlassen von Schleifen ein schlechter Programmierstil ist. Angeblich sollte man im Vorfeld gut überlegen (bzw. wissen), wie lang die Schleife sein soll. Allerdings habe ich schon oft gelesen (auch hier im Forum), dass man die Schleifen immer so schnell wie möglich verlassen sollte. Er meinte, er hat mit Programmierung jahrelang sein Geld verdient und "breaks" nur in Verzweiflungsfällen verwendet. Wie ist es nun wirklich?

    Grüße,
    Rewind



  • Nimm break, wenn du es für richtig hältst / brauchst. Das hat weder was mit schlechtem, noch mit gutem Programmierstil zu tun.



  • Rew. schrieb:

    Er meinte, er hat mit Programmierung jahrelang sein Geld verdient und "breaks" nur in Verzweiflungsfällen verwendet. Wie ist es nun wirklich?

    Er hat keine Ahnung und kann sein Dogma nicht mit Argumenten belegen.
    break und continue sind völlig in Ordnung.


  • Mod

    Du könntest dir auch Gedanken machen, wieso deine Schleife weiter läuft als nötig und dies abschalten. Wenn du es deinem Dozenten recht machen willst, kann man das dann ein bisschen umformulieren. Einfaches Beispiel:

    // Vorher: Suche erste 0 in Vector (und kennt nicht <algorithm> :-)
    for (i = 0; i < myVector.size(); ++i)
     {
       if (my_Vector[i] == 0) break;
     }
    
    // Ein bisschen anders formuliert:
    for (i = 0; myVector[i] != 0 and i < myVector.size(); ++i);
    


  • goto ist böse !



  • Meist ist es besserer Stil, die Schleife in eine eigene Funktion zu packen und diese mit return aus der Schleife zu verlassen. Das ist aber nicht in allen Fällen sinnvoll. Und dann ist break auf jeden Fall besser als irgendwelche gekünstelten Abbruchvariablen (wie while(!found) ).

    Die Aussage "Angeblich sollte man im Vorfeld gut überlegen (bzw. wissen), wie lang die Schleife sein soll" ist aber falsch, es gibt sehr viele Schleifen, wo man das vorher gar nicht wissen kann.



  • ipsec schrieb:

    Meist ist es besserer Stil, die Schleife in eine eigene Funktion zu packen und diese mit return aus der Schleife zu verlassen.

    Das macht doch bei der Problematik ("raushüpfen ist sooo böse!") gar keinen Unterschied. Ob jetzt mit break oder mit return, du hüpfst in beiden Fällen aus dem Schleifenrumpf raus.

    Bin natürlich auch für das Verwenden von break und continue, wo es nötig ist. Unleserliche Umformulierungen, wie von SeppJ gezeigt, sind kein sinnvoller Ersatz.



  • Danke, für die Antworten. Ich sehe das auch so wie die meisten hier, habe aber keine Lust, mich mit ihm zu streiten. Ich kann seine Argumentationsweise einfach nicht nachvollziehen.



  • Rew. schrieb:

    Er meinte, er hat mit Programmierung jahrelang sein Geld verdient und "breaks" nur in Verzweiflungsfällen verwendet.

    Jahrelang damit sein geld zu verdienen sagt ja nunmal rein gar nix über irgendeine qualifikation aus. Ich sehe tagtäglich leute, die seit jahren damit ihr geld verdienen und trotzdem nicht gut programmieren können.



  • Rew. schrieb:

    Er meinte, er hat mit Programmierung jahrelang sein Geld verdient

    Es mag vor Jahren Zeiten gegeben haben, wo es aus bestimmten Gründen unschön oder unschick gewesen ist, break zu benutzen. Wenn er in seinem jahrelangen Geldverdienen statt sich weiterzubilden und auf dem aktuellen Stand zu bleiben die Gründe dafür vergessen hat und jetzt solche Dogmas verbreitet, dann sind die Zeiten des Geldverdienens vermutlich in nicht allzu ferner Zeit vorbei.



  • Rew. schrieb:

    Er meinte, er hat mit Programmierung jahrelang sein Geld verdient

    Also tut er es im Moment nicht mehr? 😃


Log in to reply