nix continue und break

Wie benutzt ihr continue und break?


  • Anzahl der Umfrageteilnehmer
    153
Status
Nicht offen für weitere Antworten.
meez

meez

Top Contributor
Wir haben hier grad eine Diskussion gehabt, ob man continue und break möglichst vermeiden sollte.
Nach JDC-Styleguides sollten sie ja wenn möglich vermieden werden.
Ich benutzte sie jedoch trotzdem viel und oft . :bae:

Was meint ihr dazu, bzw. benutzt ihr sie regelmässig oder versucht ihr das mit if zu umgehen?
 
K

KSG9|sebastian

Top Contributor
Ich benutz die Dinger nur selten. Wieso brauchst du die "oft"? Soviele Situationen gibts doch gar nicht wo du z.B. n break brauchst ?! Klar, um aus ner Methode rauszuspringen, da tuts aber ein return ; auch :)
 
meez

meez

Top Contributor
Naja...man braucht sie tatsächlich nicht viel...Es geht mehr darum, ob man absichtlich versucht sie zu umgehen, wenn dann mal eine nötig wäre...
 
G

Gast

Gast
break und continue sind uralte sachen. die machen den code unglaublich unleserlich. nen break benutz ich selten um aus schleifen zu springen, aber sonst nicht.
 
S

SlaterB

Gast
ich finde die gut um unnötige Verzweigungen und boolean-Variablen zu vermeiden,

bei kleinen Schleifen die auf eine Seite passen kann das nicht schaden, bei größeren sollte man eh Unteroperationen verwenden,

wer break/ continue nicht mag, sollte auch jedes return aus seinen Programmen verbannen, das ist doch das gleiche?!
 
A

Anmeldeboykottierer

Gast
SlaterB hat gesagt.:
wer break/ continue nicht mag, sollte auch jedes return aus seinen Programmen verbannen, das ist doch das gleiche?!

So ist das aber falsch, man sollte ein return nur am Ende einer Methode verwenden.
Es geht (in dieser so oft und in so vielen Sprachen) geführten Diskussion eigentlich nur darum, ob man bedingte Sprünge generell vermeiden sollte, um die Lesbarkeit zu erhöhen. Immerhin könnte jmd. ein break, continue oder return mitten in einer Bedingung/Schleife/... übersehen und würde hier theoretisch etwas falsch machen. Da besagt dann die Theorie, das es viel viel toller ist statt einer for-Schleife mit Sprung gleich eine while-Schleife zu nehmen (u.Ä.).

Ohne in diesem Forum dem Fazit vorweg greifen zu wollen, in der Regel nähern sich die beiden Seiten eh nie an. Es gibt kein Argument, dass jmd. davon abhalten wird diese Sprünge weiter zu verwenden oder dazu bringen wird sie künftig einzusetzen.

An sich bleibt halt vorallem der Verweis auf die switch Anweisung, ohne ein break hat man halt eine fall-through Struktur und das ist spätestens hier unerwünscht.

Gruß Der Anmeldeboykottierer
 
A

AlArenal

Top Contributor
Ich muss gestehen noch nie ein 'continue' verbaut zu haben. Ein 'break' dagegen kann einem schonmal unterkommen. Wenn man beispielsweise über eine Collection iteriert und ein bestimmtes Objekt sucht, muss man nach dem Auffinden ja nciht noch die restlichen Objekte abklappern. In der Regel verwende ich aber zur besseren Lesbarkeit (die aber in den IDEs durch Huighlighting gegeben ist) Label, zu denen ich zurückspringe, auch wenn das 'break' eh an die Stelle hüpfen würde.

Und "natürlich" meide ich unnötige 'return' wo ich kann. Die kann wirklich relativ leicht mal überfahren. Stattdessen lieber eine sinnvoll benannte und belegte Variable mehr benutzen...
 
L

LoN_Nemesis

Bekanntes Mitglied
Ich verwende "break;" eigentlich nur in switch Anweisungen, "continue" kannte ich bis jetzt nicht :p
 
byte

byte

Top Contributor
Hab letztens zum ersten mal continues verwendet, aber auch nur weil ich einen in einer operationalen Semantik definierten Algorithmus reimplementiert habe. :)

Breaks hingegen verwende ich häufig, gerade in Bezug auf die neue For Schleife für die Iteration durch ne Liste. Kurzes Break wenn man gefunden hat, was man sucht und fertig. Ist mir zu nervig, dafür extra ne While Schleife zu verwenden und den Iterator per Hand zu besorgen, nur um dafür auf ein Break zu verzichten. ;)
 
B

Beni

Gast
Wenn ich mit verschachtelten Schleifen arbeite, benutze ich break und continue ab und zu. Ansonsten benötige ich diese Dinger nicht.

returns werden bei mir genau dort verwendet, wo das Ergebnis bekannt ist. Ich schreib doch nicht extra eine Logik um eine Schleife abzubrechen, das ist ja *noch* unübersichtlicher :wink:
 
Wildcard

Wildcard

Top Contributor
Beni hat gesagt.:
returns werden bei mir genau dort verwendet, wo das Ergebnis bekannt ist. Ich schreib doch nicht extra eine Logik um eine Schleife abzubrechen, das ist ja *noch* unübersichtlicher :wink:
Meine Meinung :toll:
 
I

Illuvatar

Top Contributor
Wildcard hat gesagt.:
Beni hat gesagt.:
returns werden bei mir genau dort verwendet, wo das Ergebnis bekannt ist. Ich schreib doch nicht extra eine Logik um eine Schleife abzubrechen, das ist ja *noch* unübersichtlicher :wink:
Meine Meinung :toll:
Und meine... ;)

Beni hat gesagt.:
Wenn ich mit verschachtelten Schleifen arbeite, benutze ich break und continue ab und zu. Ansonsten benötige ich diese Dinger nicht.
Und hier ebenfalls ;) Sagen wir ich habe eine Schleife, die beinhaltet ne kompliziertere Berechnung - so eine Bildschirmseite. Am Anfang dieser Schleife gehe ich in einer anderen Schleife ein fiktives Array durch, und wenn ich da etwas bestimmtes entdecke, benötige ich die komplizierte Berechnung gar nicht mehr.
Eine Stelle wo ich wahrscheinlich sogar continue mit Sprunglabel schreiben würde... Bestimmte Sachen mach ich aber dennoch nicht, verschachtelte Schleifen mit Sprunglabels an mehreren davon zum Beispiel, das find ich dann langsam echt zu unleserlich ;)
 
Wildcard

Wildcard

Top Contributor
Ja, bei Sprunglabels hört der Spaß dann auf. Produktiv hab ich noch keine Labels verwendet und hab das auch in Zukunft nicht vor.
Immer nach dem Motto: Das muss doch auch anders gehen :D
 
Ark

Ark

Top Contributor
Illuvatar hat gesagt.:
Wildcard hat gesagt.:
Beni hat gesagt.:
returns werden bei mir genau dort verwendet, wo das Ergebnis bekannt ist. Ich schreib doch nicht extra eine Logik um eine Schleife abzubrechen, das ist ja *noch* unübersichtlicher :wink:
Meine Meinung :toll:
Und meine... ;)
Meine auch. ;)

Ich denke, es kommt auf die Operationen an. Bis jetzt brauche ich relativ(!) komplexe Zusammenstellungen von break und continue immer dann, wenn ich mit Datenströmen (sei es eine Datei oder ganz einfach ein String) zu tun habe. Häufig ist es z. B. so, dass eine while-Schleife den ganzen Strom durchgeht, ich aber erst mit Auftreten eines ganz bestimmten Zeichens „arbeiten“ muss, sodass ich bei unbrauchbaren Daten einfach mittels continue die nächsten Daten anfordere. ;) Und falls ich auf ein bestimmtes Zeichen stoße, kann es z. B. sein, dass ich jetzt die Schleife abbrechen kann, und dann brauche ich break (wenn return nicht geht). ;) Das ist jetzt nur ein einfaches Beispiel, es gibt, Probleme, da wird das noch viel komplexer.

MfG
Ark
 
byte

byte

Top Contributor
Eklig wird die Sache imo erst, wenn man mehrere geschachtelte Schleifen hat und dann mit diversen Breaks und Continues arbeitet. Dann wird die Sache vielleicht doch übersichtlicher, wenn man Flags verwendet.
 
Natorion

Natorion

Bekanntes Mitglied
Also continue hab ich noch nie verwendet, ein paar breaks kommen aber schon vor. Grundsätzlich schaue ich aber, dass ich die beiden Begriffe vermeide ;)
 
André Uhres

André Uhres

Top Contributor
Wer sich an die Strukturierte Programmierung halten will, für den sind
Sprünge mitten aus einer Schleife oder Methode prinzipiell nicht zulässig,
ausser vielleicht zur Optimierung um eine bessere Performanz zu erreichen.
Ich persönlich sehe das aber etwas liberaler.
 
RaoulDuke

RaoulDuke

Bekanntes Mitglied
Ich bin eigentlich der Meinung das man eine Schleife verlassen sollte sobald es keinen Sinn mehr macht sie weiter zu durchlaufen. Wenn ich z.B. eine Collection nach etwas durchsuche, dann hat es absolut keinen Sinn mehr weiterzumachen wenn ich mein Element schon gefunden habe.

Zwar könnte man in einer while Schleife sowas machen wie:

Code:
while(it.hasNext() && found==false){
...
}

Aber ob das nun übersichtlicher ist als ein break? Vielleicht bei einer sehr grossen Schleife wo man nicht alles überblicken kann. Aber bei einer kleinen Schleife seh ich da kein Problem. Ich versuche eigentlich auch immer möglichst wenig Code in einer Schleife zu haben. Da kann man besser ein paar Teile auslagern, dann ist die reine Logik der Schleife viel leichter ersichtlich.
 
A

AlArenal

Top Contributor
Ich fände das break übersichtlicher, nicht zuletzt auch schon alleine aus dem Grund, weil es als Schlüsselwort in allen gängigen IDEs entsprechend hervorgehoben ist.

Außerdem hat das break gegenüber der Flag-Version den Vorteil, dass direkt die Schleife verlassen wird, ganz egal was dahinter innerhalb der Schleife noch an Code kommt.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Anzeige

Neue Themen


Oben