![]() |
Re: Sinnvoller Einsatz von goto
Hi,
auch mein Senf dazu: ich habe noch keinen Fall gesehen indem man goto verwenden müsste! Auch noch so mühsam konstruierte Fälle kann man mit den üblichen Konstrukten abfangen. Ansonsten: Alle Jahre wieder kommt das "goto" Kind! Grüsse Rainer |
Re: Sinnvoller Einsatz von goto
Zitat:
Zitat:
Zitat:
"Wenn ich weiss, was ich tue, mache ich keine Fehler." Der Satz ist so banal wie: "Wenn es regnet, wird die Erde naß". Den kann man nicht verneinen. Zitat:
Zitat:
Zitat:
In diesem Thread geht es nicht darum zu zeigen, wie man ein GOTO vermeidet (ich unterstelle Michael mal, das er weiss, wie das geht), sondern um die Frage, ob Code mit einem GOTO nicht manchmal lesbarer wird! Der zweite Versuch von Dir ist ein Paradebeispiel für Codeencryption :mrgreen: .
Delphi-Quellcode:
Ich verwende diese While-Schleife immer wieder gerne als Beispiel, wieso ein Sprung (Break, Exit, und die Verwendung einer eigenen Funktion) sinnvoller ist, als das umständliche Hantieren mit Schleifen und Abbruchbedingungen.
...
while (i <= 9) and not Abort do ... Zitat:
Ich behaupte aber mal als Konsequenz (um auch eine Brücke zu omata zu schlagen): 1. Jedes einigermaßen nachvollziehbare GOTO springt aus einer Schleife heraus. Andere sinnvolle Verwendungen gibt es nicht. 2. Jede Schleife kann in eine Funktion (SRP) verfrachtet werden, wodurch das GOTO durch ein EXIT ersetzt werden kann. 3. Ergo kann man GOTO streichen, ohne die Lesbarkeit des Codes zu verschlechtern. 4. Im Umkehrschluss kann Code lesbarer werden, wenn kein GOTO verwendet wird. (4) Gilt aber nicht automatisch und immer, wie man an den vielen Alternativen hier gesehen hat! So, und wer nun kein Anhänger des 'Clean Code' ist und nicht immer Bock hat, jede Pupsschleife in eine eigene Funktion zu packen, nur um ein GOTO zu vermeiden, der soll in Gottes Namen sein GOTO verwenden. Davon geht die Welt nicht unter. Der Code bleibt effizient und vor allem wesentlich lesbarer, als jeder krampfhafte Versuch, mit Flags und While-Schleifen ein GOTO zu vermeiden. |
Re: Sinnvoller Einsatz von goto
Noch mal eine Kleinigkeit, die ggf. gegen ein Goto spricht: Da es nicht in allen Sprachen existiert (z.B. in Java), lässt sich ein Quelltext mit Goto schlechter in solche Sprachen portieren, weil man den Code dazu verstehen (was natürlich immer von Vorteil ist) und auch ändern muss :lol:
(Klar, euch kann es egal sein, ob andere Programmierer die einen guten Code gerne auf "ihre" Sprache portieren möchten sich dazu abplagen müssen oder nicht ...) |
Re: Sinnvoller Einsatz von goto
Wikipedia meint:
Zitat:
Lösung quadratischer Gleichungen mit der Hochzeitsformel, wenn a 0 ist.
Delphi-Quellcode:
Dann löst das 'mal komplizierter ...
VAR A,B,C : Integer;
Label : Ende; Begin Anweisungen ... Readln(A); If (A=0) Then Goto Ende; Anweisungen ... Ende: {Hier ist das Label Ende} Writeln('Hier ist wirklich Schluß'); End. |
Re: Sinnvoller Einsatz von goto
Zitat:
Delphi-Quellcode:
:?:
VAR A,B,C : Integer;
Begin Anweisungen ... Readln(A); If A <> 0 then begin Anweisungen ... end; Writeln('Hier ist wirklich Schluß'); End. Oder wie oder was??? |
Re: Sinnvoller Einsatz von goto
IIRC gab es in TP < 7 weder break noch exit, daher waren gotos die einzige Möglichkeit, aus einer Schleife herauszuspringen. Ansonsten stört mich weder break, exit noch goto, wenn es sinnvoll und spärlich eingesetzt wird und der Lesbarkeit dient. So, die ewig Gestrigen können mich jetzt meinetwegen steinigen.
[edit] Kleine Korrektur: eine Möglichkeit gab es doch mit dem Einsatz einer Boolschen Variablen, die gesetzt werden konnte, um die Schleife zu verlassen, aber das war doch ziemlich umständlich IMO [/edit] |
Re: Sinnvoller Einsatz von goto
Programmieren ist eine Tätigkeit, die schöpferisch und sehr individuell von Statten geht.
Jeder hat Vorlieben oder Aversionen auf Grund seiner Erfahrung, was die Codierung betrifft. Und niemand muss sich zu irgendwelchen "Programmier-Stil-Standards" zwingen lassen. Also soll doch bitteschön niemand meckern, wenn jemand in bestimmten Situation auch zu "verpönten" Befehlen wie Goto, Exit, Break, Halt usw. greift. Die Hauptsache ist, dass das Programm fehlerfrei läuft. Den Anwender interessiert es herzlich wenig, was im Quell-Code steht. :-D |
Re: Sinnvoller Einsatz von goto
Zitat:
|
Re: Sinnvoller Einsatz von goto
Zitat:
Ist dort festgelegt, dass ein "goto" nicht verwendet werden darf, ist man gezwungen, dieses auch nicht einzusetzen. |
Re: Sinnvoller Einsatz von goto
Zitat:
Und dass ein Arbeitgeber vorgibt, in welchem Stil programmiert werden muss, hab ich noch nie gehört. Es gibt meist Vorgaben für die Software (was sie können muss, wie sie aussehen und gestaltet sein soll etc.). Dem Auftraggeber ist es meist sogar egal, in welcher Sprache gearbeitet wird. Hauptsache seine Vorgaben werden erfüllt. Wir machen Software, die verkauft werden soll und nicht, welche um den besten Programmierstil wetteifert. Das intrweressiert den Käufer nicht die Bohne *g* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz