# nix continue und break



## meez (20. Sep 2006)

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?


----------



## KSG9|sebastian (20. Sep 2006)

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 (20. Sep 2006)

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...


----------



## Gast (20. Sep 2006)

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.


----------



## SlaterB (20. Sep 2006)

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?!


----------



## Anmeldeboykottierer (20. Sep 2006)

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


----------



## AlArenal (20. Sep 2006)

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...


----------



## LoN_Nemesis (20. Sep 2006)

Ich verwende "break;" eigentlich nur in switch Anweisungen, "continue" kannte ich bis jetzt nicht


----------



## byte (20. Sep 2006)

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.


----------



## Beni (20. Sep 2006)

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 (20. Sep 2006)

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:


----------



## Illuvatar (20. Sep 2006)

Wildcard hat gesagt.:
			
		

> Beni hat gesagt.:
> 
> 
> 
> ...


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 (20. Sep 2006)

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


----------



## meez (25. Sep 2006)

*schieb*


----------



## Ark (25. Sep 2006)

Illuvatar hat gesagt.:
			
		

> Wildcard hat gesagt.:
> 
> 
> 
> ...


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 (26. Sep 2006)

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 (26. Sep 2006)

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 (26. Sep 2006)

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 (26. Sep 2006)

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:


```
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.


----------



## AlArenal (26. Sep 2006)

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.


----------

