Verwendet ihr "GoTo's"?
-
ja, ich verwende gotos, wenn das die Lesbarkeit der Schleifen erhört werden, oder wenn for-schleifen zu verschachtelt sind und man muss eben raus. In Kernel Modulen findet man in "Konstruktoren" und "Destruktoren" sehr oft gotos, und da bin ich keine Ausnahme
-
In C gelegentlich (Fehlerbehandlung), in C++ selten. Genauer gesagt: ich kann mich gerade nur an eine Gelegenheit erinnern, wo ich in C++ goto verwendete, nämlich in einem switch-Statement eines Bounding-Checks. (In C# gibt es für solche Fälle
goto case
, in C++ mußte da ein "echtes" goto ran)
Achja: in Assembler verwende ich es dauernd
-
Falls es den Code lesbarer und einfacher gestaltet oder notwendig ist, ja.
-
Goto, in Massen genossen, schadet auch in größeren Mengen nicht.
-
supertux schrieb:
ja, ich verwende gotos, wenn das die Lesbarkeit der Schleifen erhört werden, oder wenn for-schleifen zu verschachtelt sind und man muss eben raus.
Wenn du deinen Code besser strukturierst brauchst du nie goto.
Ich habs frühr in BASIC verwendet
-
Manchmal hat man aber nicht genügend Zeit etwas zu restrukturieren. Ich persönlich finde breaks und continues weitaus schlimmer, weil man da immer gucken muss was jetzt Schleifenblockklammern sind uns was If-Blöcke usw.
-
Ich verwende keine gotos, denn ich habe zu viel Angst, dass mir das hier passiert: http://xkcd.com/292/
Felix
-
Natürlich, genauso wie den Cobol-Befehl "alter" ;).
http://www.c-plusplus.net/forum/posting-var-mode-is-quote-and-p-is-1661285.html
-
Manche Leute benutzen statt
goto
einthrow
.
-
Marc++us schrieb:
Manche Leute benutzen statt
goto
einthrow
.Was in Ruby durchaus legitim wäre
-
Was wäre der richtig elegante Weg um aus verschachtelten (3 oder mehr) Schleifen rauszukommen?
-
- erst gar nicht soweit kommen lassen das man in 3 schachteln steckt
- erst gar nicht soweit kommen lassen das man in 3 schachteln steckt und zudem alle 3 mit einmal abbrechen will/muss
-
Mr Evil schrieb:
- erst gar nicht soweit kommen lassen das man in 3 schachteln steckt
- erst gar nicht soweit kommen lassen das man in 3 schachteln steckt und zudem alle 3 mit einmal abbrechen will/muss
-
In C ist
goto
schon ab und an nützlich, um zum Aufräumcode zu springen. Aber das ist auch nicht so schlimm, da ein guter Stil ja auch kleine Funktionen mit sich bringt und man so den Überblick nicht verliert:). In den meisten anderen Sprachen (wie C++) ist goto aber eigentlich nicht nötig.
-
basti33 schrieb:
Was wäre der richtig elegante Weg um aus verschachtelten (3 oder mehr) Schleifen rauszukommen?
throw
-
Ja, ich benutze es. Vermutlich nur so alle 2-3 Jahre, aber manchmal kommts vor.
-
Mr Evil schrieb:
- erst gar nicht soweit kommen lassen das man in 3 schachteln steckt
- erst gar nicht soweit kommen lassen das man in 3 schachteln steckt und zudem alle 3 mit einmal abbrechen will/mussUnd wie mache ich das, wenn ich über mehrere (bzw. mehrdimensionale) Arrays iterieren muss?
-
Dann bricht man in den seltensten Fällen ab. Oder hast Du mal ein griffiges Beispiel, wo es nicht auch ein return täte?
Ich habe goto in 10 Jahren bisher zwei mal verwendet. Einmal aus Faulheit (ist später rausgeflogen) und einmal, weil ich keine besser lesbare Lösung fand. Und ein künstliche eingeführtes Abbruch-Flag statt einem goto finde ich z.B. nicht wesentlich besser lesbar.
-
Mich würde mal interessieren, ob jemand die Erweiterung von gcc "Labels as Values" schon mal irgendwie irgendwo benutzt hat/benutzen musste? Also nicht nur mal zum Ausprobieren, sondern "echt" für irgendein Projekt o.ä.?
Sieht ungefähr so aus:void Gaga() { void *ptr = NULL; if (irgendein Fehler) { ptr = &&Error; /* Setze den Pointer auf die Sprungmarke Error */ } else { ptr = &&Ende; /* Setze den Pointer auf die Sprungmarke Ende */ } goto *ptr; /* gcc unterstützt pointer auf Sprungmarken :) */ Error: /* Fehlerbehandlung */ ... Ende: /* Funktionsende */ return; }