Nachteile von GoTo/GoSub?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Nova

Betreff: Nachteile von GoTo/GoSub?

BeitragDi, Jul 15, 2008 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Welche Nachteile und Vorteile haben GoTo und GuSub eigendlich genau?

Bisher habe ich nur soetwas wie "veraltet" und "uncool" gefunden. An den Argumenten kann man aber sehen wie intelligent der jeweilige Autor war, daher vertraue ich den anderen dort geschriebenen Argumenten nicht ganz.

MfG, Nova
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit
 

ChristianK

BeitragDi, Jul 15, 2008 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Durch Goto un Gosub wird der Code unübersichtlich und schwerer zu verstehen, weil man von jedem Ort an jeden anderen Ort springen kann. Funktionen eignen sich besser, weil sie Parameter und lokale Variablen erlauben.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

BladeRunner

Moderator

BeitragMi, Jul 16, 2008 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Gerade Goto führt gerne zu sehr verschachteltem Code und sollte daher gemieden werden.

Code: [AUSKLAPPEN]
.a
goto d

.b
goto c

.c
goto a

.d
goto e

.e
goto b

Na, Reihenfolge leicht zu erkennen ? Deswegen bitte kein goto- und das war jetzt noch ein recht harmloses Beispiel ohne Zwischencodes.

Gosub ist per se mal noch nicht so schlimm, da es ja bei Return an den Ausgangspunkt zurückkehrt, was ja auch eine Function macht. Der Grund weshalb es jedoch schlecht ist gosub zu benutzen ist die mangelnde Kapselung, d.h. in einer Subroutine gelten alle Variablen des Hauptprogrammes und daher ist eine Gosub anfälliger für Doppeldeklarationen und fehlerhafte Wertezuweisungen.

Desweiteren beendet sich eine Function idR automatisch, während bei einem Gosub das return aus Versehen vergessen oder auskommentiert sein kann, und dann wird der Compiler mit einem Stack overflow die Grätsche machen weil er immer wieder die Gosub aufruft aber nie zurückspringt (und daher auch die Rücksprungadressen sich auf dem Stack türmen).
Wenn hingegen eine Function sich rekursiv aufruft und es deswegen abbricht ist das zumindest recht leicht zu debuggen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ozzi789

BeitragMi, Jul 16, 2008 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso einen Stadtplan konsultieren wen es Gps gibt Wink

Ja goto ist einfacher , wen man "function" begreift , wirst du es lebenslang benützten Smile
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

tft

BeitragMi, Jul 16, 2008 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ...

Goto und Gosub sind sehr alte Sprung befehle aus den anfängen von Basic. Gelegentlich sind sie noch recht nützlich. Solten aber eigentlich nicht mer verwendet werde. Da sie ... wie oben schon beschrieben. Einige nachteile haben. die die Vorteile aufwiegen. Ich persönlich benutze sie noch innerhab von Funktionen oder wen ich ganz auf funktionen verzichte. Du must selber herausfinden ob du damit klar komst.

Gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group