AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

goto-befehl in delphi?

Ein Thema von toredo · begonnen am 24. Jul 2006 · letzter Beitrag vom 26. Jul 2006
Antwort Antwort
Seite 5 von 10   « Erste     345 67     Letzte »    
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#41

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 01:34
Zitat von omata:
Da überlegt man sich den positiven Fall (nicht den Negativen), hab ich ja oben schon geschrieben.
Wie würdest du das konkret machen? Mit Bedingungen, wie in Luckies Beispiel? Mit einem Code, der zur Hälfte aus Exceptions besteht?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#42

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 01:51
Zitat von omata:
Zitat von Luckie:
Ging nicht, weil immer eine andere Fehlermeldung kommen musste.
Für solche Fälle gibt es Exceptions.
Und eine Exception ist im Endeffekt kein Sprungbefehl?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#43

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 02:00
Wie man sowas konkret löst? Naja, es ist eigentlich blödsinn sich hier auf solch eine Diskussion einzulassen. Weil ihr euch einfach ein paar Zeilen Code zusammen stellt, der völlig aus der Luft gegriffen und speziell mit Schwierigkeiten bepackt ist. Normalerweise löst man ein Problem und da muss man sich vielleicht mal fragen, ob man nicht vielleicht schon einen grundsätzlichen Desginfehler gemacht hat. Und man schon an ganz anderer Stelle etwas ändern muss, damit sich der Knoten der Problemstelle löst.

Aber nun gut, versuchen wir es mal mit der eingeschrängten Sichtweise...
Zitat von Luckie:
Code:
if Belegnummer = 0 then
  exit
if Belegdatum = 0 then
  exit
if x = 0 then
  exit
if y = 0 then
  exit
wenn man da einen Rückgabewert realisieren muss, sieht das sowieso schonmal ganz anders aus...
Code:
if Belegnummer = 0 then begin
  Result:='Fehler: Belegnummer';
  exit;
end;
if Belegdatum = 0 then begin
  Result:='Fehler: Belegdatum';
  exit;
end;
if x = 0 then begin
  Result:='Fehler: x';
  exit;
end;
if y = 0 then begin
  Result:='Fehler y';
  exit;
end;
und nunmal ohne exit...
Code:
fehler:='';
if Belegnummer = 0 then
  fehler:='Fehler: Belegnummer'
else if Belegdatum = 0 then
  fehler:='Fehler: Belegdatum'
else if x = 0 then
  fehler:='Fehler: x'
else if y = 0 then
  fehler:='Fehler: y';

if fehler = '' then
  // mache was, es ist alles ok
Result:=fehler;
Zitat von Luckie:
Und eine Exception ist im Endeffekt kein Sprungbefehl?
Ich habe nie behauptet, das Exceptions keine Sprungbefehle sind. Aber meine Aussage, um die es in Wirklichkeit ging nämlich das man kein exit, goto, break braucht, wird dadurch nicht entkräftet.

Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#44

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 02:23
Zitat von omata:
Aber meine Aussage, um die es in Wirklichkeit ging nämlich das man kein exit, goto, break braucht, wird dadurch nicht entkräftet.
Natürlich nicht.
Aber ums mal so zu sagen: Ich komme in einem Programm auch ohne goto, break und exit aus. Ich komme auch ohne for- und while-schleifen aus, und kann auch auf if-abfragen verzichten. Ich kann jegliches Programmkonstrukt hinter mir lassen, weil es mir nicht gefällt oder ich es verabscheue.
Aber lediglich, weil sie nicht in meinen Verwendungszweck fallen, sind sie noch lange nicht überflüssig oder unbrauchbar. Ich verwende exits und breaks, genauso wie for- und whileschleifen, sowie if-abfragen. Natürlich kann ich jedes Problem ohne sie lösen, aber mir fällt die Problemlösung leichter, wenn ich sie verwende. Und genau damit wäre diese Aussage
Zitat von omata:
folgende Befehle sind überflüssig: exit, goto, break
widerlegt. Mir helfen sie bei meiner Problemlösung und haben somit ihre Daseinsberechtigung.

greetz & gute nacht
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#45

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 05:19
Argument Nr.1 Wartbarkeit/Übersichtlichkeit:

Benutze "goto, break, exit" dann, wenn es die Wartbarkeit/Übersichtlichkeit begünstigt und sonst einfach nicht. Je nachdem wie es besser passt.

Argument Nr.2 ordentliche strukturierte Programmierung

Sollte man lernen - Ohne Frage - Aber ein erfahrener Entwickler, der ein goto in einem bestimmten Fall als einfacher/ besser/schneller/wartbarer hält kann das doch wohl einbauen. Es tangiert ja sonst keinen.
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#46

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 05:56
Meine Rede....

und zwischen einem Goto oder einem Break / Exit, ist ja auch noch ein Unterschied,

in alten programmiersprachen gab es wenig bis keie Alternativen zum GOTO

Je mehr jemand ahnung vom Programmieren hat, desto Struckturierter werden die Probramme..
Nach und nach werden die Goto's dann auch weniger...
Spätestens wenn man sich nach der 20. Sprungmarke nicht mehr zurechtfindet...

Schaut mal auf die Überschrift.

Es war nur ne Frage ob es geht.. und in wie fern es Sinnvoll ist...
Eshat schon einen grung, weshalb die Befehle noch existieren...
jemand der seinen Source kennt.. und weiß das er mit einem goto 30 Zeilen Code Einsparen kann..

man, dann soll er es reinsetzten....

und von der logik her ist goto leicht zu verstehen..... und sprungmarken sind zu 100 % NÖTIG

ob es nun SUB Routinen im Sinne von Proceduren oder Funktionen sind.....

und man kann nicht erwarten das gleich jeder der nicht lange prgrammiert, sich die Programme von vorne weg zurechtschreibt, dass er keine abfrangen in einer schleife hat...

wenn ich ne bestimmte varible in einem array suche, dann kann ich dieses mit einer schleife durchgehen, und beim richtigen break setzten...

Wenn man das ganze Weiterführt.. dann kann man komplette If Struckturen überflüssig nennen..

Dazu gibt es auch viele alternativen....


Naja ich denke mal der Ganze kram ist genug Durchgekaut worden.....
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#47

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 10:38
Mann mann, sogar mit Moderatorenhilfe werden Argumente gegen eine strukturierte Programmierung gesammelt. Ich glaub ich bin im falschen Film.

Zitat von Luckie:
Und was ist ein Exit oder Break, wenn nicht ein goto?
Luckie, das könnte man tatsächlich als eine Art von goto ansehen ! Aber das kann man doch nicht als Argument nutzen, solche Sachen zu forcieren. Exit oder Break sind lokal beschränkt und man kann sich höchstens in einer function/Procedure oder Schleife selber überholen. Mit einem Goto springe ich notfalls mitten in einen uninitialisierten Prozess. Omata geht ja noch weiter als ich. Der war/ist bestimmt auf Uni. Da lernt man, solche Sachen am Besten nicht zu benutzen. Jetzt kommen nooch einige und sagen : goto gehört zum Sprachumfang, warum soll ich es denn dann nicht benutzen ? Ganz einfach, sofern man weiß, warum das überhaupt in Pascal drin ist : es ist lediglich ein Zugeständnis an Umsteiger, hauptsächlich von Basic her. 1972 hat Wirth die ersten Studenten an Pascal drangelassen. Die mußten dann lernen, wie sie die Gotos aus ihren Basic Programmen eliminieren, um so was in Zukunft eben nicht mehr zu gebrauchen ! Was ist eigentlich mit objektorientierter Programmierung ? Goto hat in dieser Welt einfach nichts zu suchen und fertig. Und wenn einer in "hunderttausenden" Programmzeilen nur einmal goto benötigt, dann frage ich mich, warum er alleine aus ästhetischen Gründen dieses nicht auch noch elimininiert.

Vorsichtshalber habe ich jetzt mal mit grep die VCL auf gotos untersucht, ob sich da eventuell ein Hinweis findet, wo sie Sinn machen : ja, das Wort taucht tatsächlich zweimal auf ! In 2 Kommentaren.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#48

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 11:04
Zitat von omata:
folgende Befehle sind überflüssig: exit, goto, break das sind Befehle, die nicht zu einer strukturierten Programmierung gehören.
Hm komisch, break und continue sind recht junge Sprachkonstrukte in Delphi. Glaubst Du wirklich, man hätte die eingeführt, wenn die nicht dazu gehören. Ich weiß nicht mehr wann die kamen, aber es war "gegen" Delphi 3, so circa

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#49

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 11:27
Zitat von sakura:
..Hm komisch, break und continue sind recht junge Sprachkonstrukte in Delphi.
Auch das stimmt und ist der Grund dafür, daß so was in meinen Programmen mal nicht zu finden ist. Daraus könnte man ja auch den Umkehrschluß ziehen, daß man es eben nicht braucht. Ich sage mal, es ist ein neueres Zugeständnis an die Delphi-Verwandschaft, insbesondere für Schreibfaule, siehe Luckie. Der mögliche Schaden ist durchaus begrenzt und ein erfahrener Programmierer kommt locker damit klar. Schließlich geht es da nur um eine einzelne Spaghetti, die vielleicht nicht genau in der Mitte geteilt wurde, was allerdings geplant war. Gotos sind dafür verantwortlich eine größere Menge Spaghetti-Code zu produzieren, wo man wirklich nicht mehr sagen kann wo Anfang und Ende einer Nudel genau ist. Wo ist Alzaimer ? Der kennt sich damit aus.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#50

Re: goto-befehl in delphi?

  Alt 25. Jul 2006, 11:31
Zitat von Hansa:
Mit einem Goto springe ich notfalls mitten in einen uninitialisierten Prozess.
Nein, mit einem Goto kan man auch nicht prozedurübergreifend springen.

Zitat:
Der war/ist bestimmt auf Uni. Da lernt man, solche Sachen am Besten nicht zu benutzen.
Auf der Uni lernt man auch vieles, was mit der Realität nicht viel genmein hat.

Zitat:
Jetzt kommen nooch einige und sagen : goto gehört zum Sprachumfang, warum soll ich es denn dann nicht benutzen ? Ganz einfach, sofern man weiß, warum das überhaupt in Pascal drin ist : es ist lediglich ein Zugeständnis an Umsteiger, hauptsächlich von Basic her. 1972 hat Wirth die ersten Studenten an Pascal drangelassen. Die mußten dann lernen, wie sie die Gotos aus ihren Basic Programmen eliminieren, um so was in Zukunft eben nicht mehr zu gebrauchen ! Was ist eigentlich mit objektorientierter Programmierung ? Goto hat in dieser Welt einfach nichts zu suchen und fertig. Und wenn einer in "hunderttausenden" Programmzeilen nur einmal goto benötigt, dann frage ich mich, warum er alleine aus ästhetischen Gründen dieses nicht auch noch elimininiert.
Schöne Begründung. Aber wie Neotracer64 schon gesagt hat, es gibt Gründe es zu benutzen:
Zitat:
Benutze "goto, break, exit" dann, wenn es die Wartbarkeit/Übersichtlichkeit begünstigt und sonst einfach nicht. Je nachdem wie es besser passt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 10   « Erste     345 67     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz