Lotus Notes / Domino Sonstiges > Projekt Bereich
Welche Schleife wann in Script
TMC:
Noch ein Nachtrag zu meinem letzten Problem wegen "Loop in the middle" (:-))
Grausam aber wahr könnte man da doch einen goto durchführen (kenn ich noch von good old C64 Basic Zeiten :-))?
Nur ne Idee....
TMC
*Edit*
Na ja, spricht wohl gegen diese Rule von Axel:
--- Zitat ---Also jedes in einem Schleifenkonstrukt oder Verzweigungskonstrukt begonnene Schleifen- oder Verzweigungskonstrukt muß auch innerhalb des Schleifen oder Bedingungskonstrukt, in dem es geöffnet wurde, geschlossen werden.
--- Ende Zitat ---
Semeaphoros:
Zu TMC - loop in the middle
Axel hat Dir schon gesagt, dass das nicht geht und dass das wohl nirgends geht. Deine "Umgehung" mit einem Goto ist das, was man schlussendlich tatsächlich machen kann, aber bitte nicht mit einem Goto, erstens sieht es nicht besonders modern aus (das würd mich aber nicht stören), zweitens durchbricht es ganz klar und frappant die strukturierte Programmierung, drittens würde ein solcher Absprung aus der Schleife einige Compiler ins Schleudern bringen: nicht jeder merkt, dass Du dadurch die Schleife verlässt (mindestens bei ältern Compilern ist einem das noch gelungen) und es bleiben dann im Memory nicht abgebaute Kontrollstrukturen bestehen: ein Memory - Leak.
Wenn Du Deine If-Bedingung mit einem NOT versiehst, sie also logisch umdrehst, dann kannst Du aus dem IF heraus den Loop verlassen, und dafür gibts nen Befehl: EXIT SUB (ok, ist eigentlich ein spezialisiertes Goto und damit etwa das, was Du Dir ausgeheckt hast, aber hier weiss der Compiler, dass Du die Schleife verlässt)
Zu Axel:
Vielen Dank für diese Gedanken zur Performance, ich muss mal das Wochenende durchgehen lassen, und dann werd ich wohl tatsächlich ernsthaft daran denken, so eine Session zu bauen.
Was Du da von Eclipse erzählst, kann Notes-Leute schon zum Lechzen bringen (siehe TMC). Ich kenn das allerdings im Delphi zum Beispiel schon seit ewig, und schon bevor die IDEs solche schönen Sachen gebracht haben, haben verschiedene elegante Editoren das schon gekonnt. Ich vermisse das laufend im Notes (nebst der enorm schlechten Editier-Unterstützung für Custom Classes).
Noch was: einen Schleifenkörper möglichst kurz zu halten ist nicht nur eine Frage der Uebersicht, sondern auch der Performance. Deshalb ist auch Vorsicht geboten mit Aufruf von Subroutinen anstelle der Ausprogrammierung einer Sequenz, da Subroutinen notorische Performance-Verschwender sind (keine Ahnung, welchen Preis man dafür in LotusScript zahlt, um das gleich mal klarzustellen).
Axel_Janssen:
--- Zitat von: TMC am 03.10.03 - 20:28:45 ---Grausam aber wahr könnte man da doch einen goto durchführen (kenn ich noch von good old C64 Basic Zeiten :-))?
Nur ne Idee....
--- Ende Zitat ---
Hell Nooo.
http://www.acm.org/classics/oct95/
Goto ist nicht einfach grausam sondern ein Synonym für das Ende der Zivilisation. Wenn ich das Wort höre, kommen mir unverzüglich Bilder von marodierenden, plündernden, vergewaltigenden Milizen an der afrikanischen Westküste in den Sinn. :-[
TMC:
Ok, sorry für meinen Schocker am Freitag Abend:
GOTO
War mir nicht bewußt dass das so derart Anti-Sinnvoll-Programmiernd ist ;D
--- Zitat ---Goto ist nicht einfach grausam sondern ein Synonym für das Ende der Zivilisation. Wenn ich das Wort höre, kommen mir unverzüglich Bilder von marodierenden, plündernden, vergewaltigenden Milizen an der afrikanischen Westküste in den Sinn.
--- Ende Zitat ---
;D
Krass. Da hab ich ja was angestiftet.
Und trotzdem kann ich es nicht lassen, ein good old Befehl vom 64er:
10 Print "GOTO sucks. sollte never verwendet werden."
20 goto 10
;D Und nun blinkt der Bildschirm ohne Ende.....
Ist wohl ein leidiges Überbleibsel aus Basic (?), das so über die Jahre mitgezogen wurde.
TMC
Semeaphoros:
Axel, reihe Dich nicht unnötig in die ewigen Nörgler, Besserwisser und so weiter ein.
Natürlich ist ein Goto häufig nicht elegant.
Ich staune aber bald schon seit Jahrzehnten, wie Leute über Gotos herziehen können, und gleichzeitig Konstrukte verwenden wie (in LS umgesetzt):
Do
......
Exit Loop
.....
Loop
Syntatkisch sind all diese Exit-Loop/Exit-Sub (schlimm !!!) Exit-Forall nichts anderes als verkappte Gotos, und dieselben, die auf der einen Seite die Gotos "verarschen", predigen gleichzeitig religiös, Schleifen dürfen nie mit Bedingungen versehen werden, sondern immer mit einem Exit verlassen werden .... Da verstehe ich dann die Welt nicht mehr, bzw. muss feststellen, dass die Leute wohl von Grammatiken und Syntax/Synonymen und so was überhaupt keine Ahnung haben (ja, tatsächlich, hier überlappt der ehemalige Sprachlehrer mit dem Teil in mir, der mal an der FeU auch noch theooretische Informatik machen musste, die praktische hat ihn aber mehr interessiert :-)
Stimmt, falsch eingesetzte Gotos ergeben schrecklichen Code. Ich kann aber auch ohne Gotos gleich schlechten Code schreiben. Und manchmal sind die Gotos (implizit oder explizit) ganz einfach notwendig.
Da kommen dann noch ein paar andere Sachen dazu: Jede Schleife wird, wenn wir ihr im Assembler wieder begegnen, durch mindestens einem konditionellen Jump (= Goto !!) realisiert, sprich ein Goto. Ein If - Else Konstukt bedingt im Minimum zwei Jumbs ( = Goto !! ) und so weiter .......
Also bitte zuerst überlegen, bevor man irgendwas in Bausch und Bogen verwirft.
Und ebenso bitte überlegen, wenn man mal ein Goto wirklich brauchen sollte, was aber bitte auch für die verkappten Gotos, die in der Verkleidung eines Exit daherkommen, gelten muss!
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln