Was haltet ihr von Goto

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.

Was haltet iht von Goto?

Benutze ich ständig
7
13%
Brauch ich eigentlich nicht
19
37%
Noch nie davon gehört
2
4%
Ist mir egal
2
4%
Goto ist das Werk des Teufels
11
21%
Brauch ich selten
8
15%
Diese Umfrage ist ein Mülleimerkandidat
3
6%
 
Insgesamt abgegebene Stimmen: 52

Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ich benutze Goto nie, das habe ich mir abgewöhnt und seitdem kommen bei mir nurBreak und Continue zum Einsatz.
Besser so, hab es mit meinen Gotos zu 3.94er Zeiten auch in meinem ersten "richtigem", großem Projekt übertrieben und mich obendrein gewundert, warum mein Programm immer abstürzt.

@ DrFalo
Seit wann kennt man seine Rekursionstiefe nicht? Kann mir grade keinen derartigen Fall vorstellen...
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
kswb73
Beiträge: 319
Registriert: 04.02.2008 16:51
Kontaktdaten:

Beitrag von kswb73 »

Richitg eingesetzt können Gotos ja auch nützlich sein. Ich benutz sie des öfteren bei Spielen, da ich zwischen Hauptmenu, Optionen, Speichern, Laden hin und herschalten kann und diese meisten eine eigene Schleife haben.
Als erstes setzte ich eine Sprungmarke. Dannach lege ich Variablen fest, damit ich diese nicht ausversehen kaput machen kann und um nicht für jeden Teil einzelene Variabeln festzulegen. Dannach kommt dann die Schleife.
Das ist praktisch, denn ich sag nur goto MainMenu und schon lade ich im Hauptmenu. Fertig. Und sorgen darum zu machen irgedeine Variable verstellt zu haben brauch ich mir auchnicht. Wird ja alles korrigiert.
Zuletzt geändert von kswb73 am 13.12.2008 22:59, insgesamt 1-mal geändert.
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

DrFalo hat geschrieben:Gibt auch Fälle in denen ich die Schleifenanzahl zum Zeitpunkt des Verlassens nicht kenne.
Den Fall würd ich aber jetzt gerne mal kennen lernen ... :shock:
Bei Rekursionen ist das klar ... aber schleifen ... es gibt nur eine feste
Anzahl an gestarteten Schleifen, also kann man auch wissen, wie viele
beendet werden sollen. :?

... ich hab seit PB nicht ein mal ein GOTO verwenden müssen ...
Mit etwas überlegen kann man (zumindest in PB) jedes GOTO vermeiden.
BREAK und CONTINUE verwende ich statt dessen heufig.

Hoch lebe die Planung :mrgreen:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Ich benutz sie des öfteren bei Spielen, da ich zwischen Hauptmenu, Optionen, Speichern, Laden hin und herschalten kann und diese meisten eine eigene Schleife haben.

jedem ne eigene schleife zu geben ist auch ... fishy ... Kinderkram ...

eine Hauptschleife, ein Clearscreen, ein FlipBuffers im ganzen Code,
dann braucht man auch kein GoTo.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Kaeru Gaman hat geschrieben:> Ich benutz sie des öfteren bei Spielen, da ich zwischen Hauptmenu, Optionen, Speichern, Laden hin und herschalten kann und diese meisten eine eigene Schleife haben.

jedem ne eigene schleife zu geben ist auch ... fishy ... Kinderkram ...

eine Hauptschleife, ein Clearscreen, ein FlipBuffers im ganzen Code,
dann braucht man auch kein GoTo.
Jo mach ich auch so.
Hab da ne Variable, welche den Spielstatus/Position/Wasauchimmer hält. 1 steht z.b. für laufendes Spiel, 2 für Hauptmenü, etc. Dann wird innerhalb der Gameloop einfach mit Select für jeden Status der entsprechende Code ausgeführt. Goto brauch ich da keins.

Ich brauche nie Goto. Hab ich früher in Turbo Basic stark verwendet und mir dann in Visual Basic abgewöhnt. Der Grund ist ganz einfach das der Code wesentlich an Lesbarkeit einbüst.

Aber ein Machwerk des Teufels ist Goto ganz sicher nicht.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag von xperience2003 »

ich koennt ohne garnich leben

Goto kneipe
Goto Kuehlschrank
Goto Klo

nein, wenn ich mal was spielerisches code, dann benutze ich nie gotos
ganz einfach weil ich allen kram in procedures packe
und auch in diesen benutze ich keine gotos, sondern hab ne variable
fuer den status und benutze select,case,endselect

allerdings ist das weder besser noch schlechter, auch der "goto-hass" ist totaler nonsens
wenn man sich den asm output ansieht, macht der compiler bei pb auch nur nen lumpigen sprungbefehl draus, wie bei if - endif - abfragen, wo der weiterfuehrende code "weiter weg" ist, oder eben repeat - forever etc

das einzige was ich im goto auszusetzen haette, waere das wenn ich goto benutze, alles in einer codedatei sein muesste, damit ich den ueberblick bewahre
darum packe ich alles in procedures und mache fuer jede procedure eine eigene quelltextdatei

die hauptprogrammschleife ist dann nichts anderes als das hier

Code: Alles auswählen

global gamemode=0
repeat
select gamemode
case 0
  menu()
case 1
 game(level)
case 2
 intro()
case 3
 deadscreen()
...etc
endselect
forever
die grafiken werden vor dem spiel und menu komplett geladen,
bei groesseren sachen bei jedem aufruf von game(level) je nach level
amiga rulez...
Rebirth Software
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

xperience2003 hat geschrieben: allerdings ist das weder besser noch schlechter, auch der "goto-hass" ist totaler nonsens
wenn man sich den asm output ansieht, macht der compiler bei pb auch nur nen lumpigen sprungbefehl draus, wie bei if - endif - abfragen, wo der weiterfuehrende code "weiter weg" ist, oder eben repeat - forever etc
Das eine hat aber nichts mit dem anderen zu tun. Zumindest denke ich nicht
das Fred/Freak sowas als Compileroutput raushauen :

Code: Alles auswählen

Procedure test()
  Goto lala
EndProcedure  

lala:
test()

Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

AND51 hat geschrieben:Ich benutze Goto nie
AND51 hat geschrieben:onErrorGoto(?Bed)
:lol: ;-)

Grüße ... Kiffi
Benutzeravatar
Captn. Jinguji
Beiträge: 397
Registriert: 07.06.2005 19:47
Computerausstattung: PB 4.73x64, i7, WIN 10x64, ATI NVidia RTX 2070
Wohnort: Witten

Beitrag von Captn. Jinguji »

AND51 hat geschrieben:@ DrFalo
Seit wann kennt man seine Rekursionstiefe nicht? Kann mir grade keinen derartigen Fall vorstellen...
Öhmmm rekursives Abklappern von Filesystemen z.B. ?

Da schleppe ich Rekursionstiefenmesser nur mit, wenn ich von vornherein die Suchtiefe begrenze, ansonsten lass ich sie laufen, so tief sie will, aber ich weiss die Tiefe nicht.

Aber ich benutze andererseits auch nie GOTO, ist mir zu unübersichtlich.
Ist das Kunst hier, oder kann das weg ?
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Captn. Jinguji hat geschrieben:
AND51 hat geschrieben:@ DrFalo
Seit wann kennt man seine Rekursionstiefe nicht? Kann mir grade keinen derartigen Fall vorstellen...
Öhmmm rekursives Abklappern von Filesystemen z.B. ?

Da schleppe ich Rekursionstiefenmesser nur mit, wenn ich von vornherein die Suchtiefe begrenze, ansonsten lass ich sie laufen, so tief sie will, aber ich weiss die Tiefe nicht.

Aber ich benutze andererseits auch nie GOTO, ist mir zu unübersichtlich.
Das macht man aber mit einer Prozedur und keiner Schleife. Und wo da
nen Goto hin kommen könnte ist mir auch schleierhaft. :?

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten