IT

Goto in C#, Python, PHP, Excel VBA, Bash, PowerShell nutzen?

Als vor über 40 Jahren Batch-Dateien zu Microsofts DOS hinzugefügt wurden, war die einfache Programmiersprache BASIC vorherrschend. Die BASIC-Sprache verwendete die Goto-Anweisung und Sprungmarken, um dem Programmierer die Möglichkeit zu geben, Codezeilen zu wiederholen bzw. im Code zu springen. Also fügte Microsoft den Goto-Befehl zur Batch-Sprache bzw. in der Kommandozeile hinzu, um dieselbe Art von Funktionalität bereitzustellen. Bis heute gibt es Goto in vielen Programmier- und Skriptsprachen. Allerdings gibt es schon immer sehr viele kritische Meinungen zu Goto, weshalb es nicht zuletzt beispielsweise in der neuen PowerShell nicht mehr enthalten ist! In diesem Artikel erfährst du warum, wie du es in den meisten Programmiersprachen nutzt und was es für Alternativen gibt, wenn Goto nicht genutzt werden kann.

 

Goto-Nutzung in verschiedenen Programmier- und Skriptsprachen

Hier bekommst du zu vielen gängigen Programmiersprachen einen Überblick wie Goto dort, wenn vorhanden, genutzt werden kann:

Sprache Goto-Syntax
C
C++ wie in C
C# wie in C
Java kein Goto in Java!
PHP wie in C
Python kein Goto in Python!
VBA (Excel VBA)
Bash / Shell unter Linux kein Goto in Bash!
Batch / CMD
PowerShell kein Goto in PowerShell! (aber man kann es sich wenn man es unbedingt nutzen will z. B. so selber bauen)
JavaScript kein Goto in JavaScript!

 

Goto nutzen oder nicht?

Die Frage die wohl viele beschäftigt ist, ob man nun Goto nutzen sollte oder komplett aus seinem Code verbannen sollte:

 

Einfache Umsetzung (if X goto Z)

Für die Nutzung von Goto im Code spricht natürlich die sehr einfache Nutzung. Man kann relativ einfach Teile des Codes wiederholen und durch die Nutzung von if-Abfragen den Sprung an eine bestimmte Stelle im Code an Konditionen knüpfen. In Batch-Dateien z. B. lassen sich nur durch Hilfe von Goto While- und Until-Schleifen mehr oder weniger nachbilden.

Insbesondere für Anfänger mag dies erst einmal einfacher zu nutzen sein, da man sich eigentlich nur diesen Befehl und die Auszeichnung der Sprungmarken verinnerlichen muss. Die ganzen anderen Sprachelemente wie Schleifen, Funktionen oder andere Befehle braucht man sich gar nicht erst anschauen oder merken.

 

Unstrukturierter Spaghetti-Code durch Goto-Nutzung?

Der größte Nachteil an der durchgehenden Nutzung von Goto -Befehlen und Sprungmarken im gesamten Code eines Programms ist die Nachvollziehbarkeit des Codes. Diese leidet massiv darunter, wenn man im Code hin- und herspringt. Der Code wird dadurch schwer zu lesen und man verliert leicht den Überblick darüber, wann man an welche Stelle springt. Hierdurch lassen sich auch leicht Fehler einbauen und das Debugging wird unnötig erschwert.

Allerdings kann man schlechten Code auch in einer absolut modernen Programmiersprache ohne Nutzung von Goto bauen.

 

Goto-Alternativen

Als Alternativen zu Sprungmarken und Goto-Befehlen sind Schleifen, Funktionen und Befehle wie continue oder break, wenn sie in der Programmiersprache angeboten werden zu nutzen.

 

Apple’s Goto-Fail

Im Jahr 2014 wurde ein schwerwiegender Programmierfehler von Apple öffentlich. Hierbei wurde durch einen fehlerhaft gesetzten doppelten Goto-Befehl  eine Überprüfung der SSL-Verbindung übersprungen und die Verbindung galt in jedem Fall als sicher:

 

Fazit

Meiner persönlichen Meinung nach sollte man Goto auch möglichst sparsam einsetzen und auf moderne Elemente der Programmiersprachen zurückgreifen. In Sprachen wie Batch hat man aber kaum eine andere Wahl als Goto zu verwenden. Allerdings sollte man darauf achten in solchen Fällen den Code möglichst lesbar zu halten und nicht wild im Code vom Anfang zum Ende und wieder in die Mitte hin- und herzuspringen. Hier würde ich Goto in erster Linie nur zum Überspringen zum nächsten Schritt oder zum Nachbilden von Schleifen nutzen.

 

 
 

 

Tobias Langner

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert