Diskussion:Spaghetticode

message: Bei diesem Beispiel kann doch Schritt 70 (und folgende) niemals erreicht werden???
Grüße, cjo
10 CLS 
20 i = 0 
30 i = i + 1 
40 PRINT i; " squared = "; i * i 
50 IF i >= 10 THEN GOTO 60 
60 GOTO 20 
70 PRINT "Program Completed." 
80 INPUT "Do it Again (j)"; sel$ 
90 IF sel$ = "j" GOTO 10 
100 END (nicht signierter Beitrag von 217.224.78.149 (Diskussion | Beiträge) 20:19, 22. Okt. 2009 (CEST)
replies: text: Hauptproblem ist halt, dass man Spaghetticode nicht wirklich mit einem kurzen Beispiel erklären kann. Es sollten schon mehr als eine Handvoll bedingte Sprünge zu Programmteilen sein, von denen aus wieder munter weitergesprungen wird. --213.221.250.85 17:59, 7. Dez. 2010 (CET)

message: Ich hab zufällig gerade ein hervorragendes und trotzdem kurzes Beispiel für Spaghetti-Code gefunden: 
 goto b:
 a:
 goto c;
 b:
 goto d;
 c:
 retrun;
 d:
 goto a;
Obwohl es recht kurz ist, ist es unmöglich den Ablauf mit einem Blick zu erfassen. Ich denke das ist es was einen wirklichen Spaghetti-Code ausmacht: Mehrere Sprunganweisungen hin und zurück über den Code. Das bei diesem Beispiel auf andere Befehle wie PRINT oder INPUT verzichtet wurde ist nur von Vorteil, da damit nicht vom wesentlichen abgelenkt wird. -- Stefan 07:59, 11. Mai 2011 (CEST)
thread_title:  Gutes Beispiel 

message: Um mal den Artikel zu zitieren:
:Das nachfolgende simple Basic-Programm gibt die Zahlen 1 bis 10 zusammen mit dem jeweiligen Quadrat auf dem Bildschirm aus. Die verworrenen GOTO-Anweisungen machen es schwierig, den Ablauf des Programms nachzuvollziehen.
::Das folgende Programm ist deutlich strukturierter und führt dieselbe Funktion aus:
Kein gutes Beispiel. Das GOTO erzeugt hierbei eine Schleife. Sie ist übersichtlich, klar strukturiert und für einen Außenstehenden ohne Informationen über die verwendete Sprache und deren Syntax auch deutlich leichter verständlicher als das nachfolgende Beispiel.
Dieses Beispiel macht nicht das Problem mit GOTO-Anweisungen deutlich, sondern zeigt die möglichen Vorteile. Dxr-Cnx (Diskussion) 16:28, 21. Mär. 2012 (CET)
thread_title:  Beispiel Nr.1 

message: Ich denke, man sollte mehr hervorheben, das Spaghetticode historisch begründet ist. In Maschinencode/ Assembler (Informatik) sind Sprungmarken üblich (besser unumgänglich). Abgelöst wurde das durch Prozedurale Programmierung. Das höhere Sprachen heute noch Sprungmarken erlauben, ist hingegen unerträglich. -- Gerold (Diskussion) 18:41, 31. Okt. 2015 (CET)
thread_title:  Zwischen Assembler und Prozedurale Programmierung 

message: Objektorientiert Programmierung wird im Artikel als Gegenmaßnahme gegen Spaghetti-Code genannt.
Da habe ich aber schon Beispiele gesehen, die man eher als eigene Form von Spaghetti-Code ansehen muss: Wenn der Programmfluss ständig in der  Vererbungshierarchie hinauf und hinunter läuft ist das bei Betrachtung des Quellcodes keineswegs übersichtlich. 
: In der OO wird der Programmfluss nur selten die Vererbungshierarchie rauflaufen und nur bei Polymorphismus runterlaufen. Viel eher geht der Programmfluss (wie auch bei Nicht-OO-Sprachen) in andere Funktionen/Methoden z.B. in verwendete Frameworks/Libraries. Darum ist ein typischer Stacktrace auch meist im Detail nicht interessant und der Programmfluss wird von Entwicklern nur innerhalb der einzelnen Methode betrachtet.
: D.h. nicht OO, sondern die Verwendung von Frameworks/Libraries (die ja nötig ist um produktiv entwickeln zu können) macht den Programmfluss unübersichtlich. Der Quellcode ist aber genau aus diesem Grund wesentlich übersichtlicher. --Sebastian.Dietrich   ✉  18:04, 27. Apr. 2022 (CEST)
thread_title:  Objektorientiert Programmierung 

message: Inversion of Control / Dependency Injection + massig (selbsterzeugte) Events + für jeden Pups eine eigene Klasse + 2 potenziell wiederverwendbare Zeilen müssen schon eine eigene Methode sein = Spaghetticode vom Allerfeinsten. --87.174.42.90 14:02, 22. Nov. 2022 (CET)
replies: text: IoC bereinigt Architekturfehler (z.B. zyklische Abhängigkeiten), DI trennt bzw reduziert Code, Events helfen Code zu trennen bzw. asynchron zu machen, eigene Klassen für Pups trennen die Pups, eigene Methoden für 2 potentiell wiederverwendbare Zeilen fordert niemand. Nichts von alldem erhöht Spaghetticode bzw. hat überhaupt was mit Spaghetticode zu tun. Du meinst offensichtlich was anderes. Overengineering? --Sebastian.Dietrich   ✉  17:00, 24. Nov. 2022 (CET)
thread_title:  Ich verstehe die Fixierung auf GOTO-Sprünge nicht.