Spaghetti-Code

Spaghetti-Code ist ein abschätziger Begriff für den Quellcode, der eine komplizierte und verwirrte Kontrollstruktur, besonders das ein Verwenden vieler GOTOs, Ausnahmen, Fäden oder anderer "unstrukturierter" sich verzweigender Konstruktionen hat. Es wird solchen genannt, weil Programm-Fluss dazu neigt, wie eine Schüssel von Spaghetti, d. h. gedreht und verwirrt auszusehen. Spaghetti-Code kann durch mehrere Faktoren, einschließlich unerfahrener Programmierer und eines komplizierten Programms verursacht werden, das unaufhörlich über einen langen Lebenszyklus modifiziert worden ist. Strukturierte Programmierung hat außerordentlich das Vorkommen des Spaghetti-Codes vermindert.

Beispiele

Unten ist, was als ein triviales Beispiel des Spaghetti-Codes im GRUNDLEGENDEN betrachtet würde. Das Programm druckt die Nummern 1 bis 10 zum Schirm zusammen mit ihrem Quadrat. Bemerken Sie, dass Einrückung nicht verwendet wird, um die verschiedenen Handlungen zu unterscheiden, die durch den Code durchgeführt sind, und dass die Behauptungen des Programms ein Vertrauen auf Linienzahlen schaffen. Beobachten Sie auch die unvorhersehbare Weise, wie der Fluss der Ausführung von einem Gebiet bis einen anderen springt. Wirkliche Ereignisse des Spaghetti-Codes sind komplizierter und können außerordentlich zu Wartungskosten eines Programms beitragen.

10 ich = 0

20 ich = ich + 1

30 DRUCK i; "quadratisch gemacht ="; ich * ich

40 WENN i> = 10 DANN GOTO 60

50 GOTO 20

60 DRUCK "Vollendetes Programm."

70 ENDE

</Quelle>

Hier ist derselbe in einem strukturierten Programmierstil geschriebene Code:

10 WEIL ich = 1 bis 10

20 DRUCK i; "quadratisch gemacht ="; ich * ich

30 FOLGENDE ich

40 DRUCK "Vollendetes Programm."

50 ENDE

</Quelle>

Das Programm springt von einem Gebiet bis einen anderen, aber dieses Springen ist voraussagbar und formell. Das ist, weil das Verwenden für Schleifen und Funktionen Standardweisen ist, Fluss-Kontrolle zur Verfügung zu stellen, wohingegen die goto Behauptung willkürliche Fluss-Kontrolle fördert. Obwohl dieses Beispiel klein ist, echte Weltprogramme aus vielen Linien des Codes zusammengesetzt werden und schwierig sind, wenn geschrieben, in aufrechtzuerhalten, codieren Spaghetti Mode.

Zusammenbau und Schrift-Sprachen

Wenn

sie die vielen Formen der Zusammenbau-Sprache (und auch der zu Grunde liegende Maschinencode) verwendet, ist die Gefahr, Spaghetti-Code zu schreiben, besonders groß.

Das ist, weil sie auf niedriger Stufe Programmiersprachen sind, wohin Entsprechungen für die strukturierte Kontrolle Behauptungen solcher bezüglich Schleifen überfluten, und während Schleifen bestehen, aber häufig von unerfahrenen Programmierern schlecht verstanden werden.

Viele scripting Sprachen haben dieselben Mängel: Das wendet auf die Gruppe scripting Sprache von DOS und DCL auf VMS an.

Dennoch kann das Übernehmen derselben Disziplin wie in der strukturierten Programmierung die Lesbarkeit und Haltbarkeit solchen Codes außerordentlich verbessern.

Das kann die Form der Vereinbarung annehmen, die den Gebrauch beschränkt, den Standardstrukturen oder Gebrauch von einer Reihe von Assemblermakros für und Konstruktionen zu entsprechen.

Die meisten Zusammenbau-Sprachen stellen auch einen Funktionsstapel und Funktionsanruf-Mechanismen zur Verfügung

der verwendet werden kann, um die Vorteile der Verfahrensprogrammierung zu gewinnen. Makros können wieder verwendet werden, um eine standardisierte Form des Parameter-Übergangs zu unterstützen, globale Ad-Hoc-Variablen und die Handlung an einem Entfernungsantimuster zu vermeiden.

Programme, die auf Sprachen des höheren Niveaus mit Konstruktionen auf höchster Ebene solcher bezüglich Schleifen (als im zweiten Beispiel oben) geschrieben sind, werden häufig in den Zusammenbau oder Maschinencode kompiliert. Wenn dieser Prozess vorkommt, werden die Konstruktionen auf höchster Ebene in den auf niedriger Stufe "Spaghetti-Code" übersetzt, der dem ersten Beispiel oben in Bezug auf den Kontrollfluss ähneln kann. Aber weil Bearbeiter Konstruktionen auf höchster Ebene im Quellcode, die Probleme treu sein müssen, dass Plage relativ unstrukturierte Sprachen wie GRUNDLEGENDER in Sprachen des höheren Niveaus nicht umgeht. Es bedeutet wirklich jedoch, dass das Beseitigen bei sogar mild optimiertem Code mit einem Quellniveau-Testhilfeprogramm überraschend verwirrend sein kann.

Andere zusammenhängende Begriffe

Der Begriff "Spaghetti--Code" hat das Prägen anderer Begriffe begeistert, die ähnlich Programm-Struktur mit Stilen von Teigwaren vergleichen.

Ravioli-Code

Ravioli-Code ist ein Typ der Computerprogramm-Struktur, die durch mehrere kleine und (ideal) lose verbundene Softwarebestandteile charakterisiert ist. Der Begriff stammt von der Analogie von Raviolin (kleine Teigwaren-Beutel, die Käse, Fleisch oder Gemüsepflanzen enthalten) zu Gegenständen (die ideal kurz zusammengefasste Module sind, die sowohl aus dem Code als auch aus den Daten bestehen).

Lasagne-Code

Lasagne-Code ist ein Typ der Programm-Struktur, die durch mehrere bestimmte und trennbare Schichten, wo jede Schicht von Codezugriffsdienstleistungen in den Schichten unten durch bestimmte Schnittstellen charakterisiert ist. Die Analogie stammt von der layered Struktur eines Tellers von Lasagne, wo verschiedene Zutaten (Fleisch, Soße, Gemüsepflanzen oder Käse) jeder durch Streifen von Teigwaren getrennt werden.

Ein allgemeines Beispiel des Lasagne-Codes kommt an der Schnittstelle zwischen verschiedenen Subsystemen, solcher als zwischen dem Webanwendungscode, der Geschäftslogik und einer Verwandtschaftsdatenbank vor. Eine andere allgemeine Programmiertechnik, abwechselnde harte und weiche Schichten (Gebrauch von verschiedenen Programmiersprachen an verschiedenen Niveaus der Programm-Architektur), neigt dazu, Lasagne-Code zu erzeugen. Im Allgemeinen sind Client/Server-Anwendungen oft Lasagne-Code, mit bestimmten Schnittstellen zwischen Kunden und Server.

Lasagne-Code macht allgemein encapsulation zwischen den verschiedenen "Schichten" geltend, weil die fraglichen Subsysteme keine Mittel der Kommunikation außer durch einen bestimmten Mechanismus, wie Strukturierte Anfragensprache, eine Auslandsfunktionsschnittstelle oder Entfernter Verfahren-Anruf haben können. Jedoch können individuelle Schichten im System hoch unstrukturiert oder aufgelöst werden.

Der Begriff wurde vom Datenbankguru Joe Celko 1982 ins Leben gerufen.

Ein ähnlicher layering kann in Nachrichtenstapeln gesehen werden, wo ein Protokoll (wie das OSI Modell) in Schichten (in diesem Fall 7) mit jeder Schicht geteilt wird, die eine beschränkte und gut definierte Funktion durchführt und mit anderen Schichten mit spezifischen und standardisierten Methoden kommuniziert. Solch ein Design erleichtert die Entwicklungsverbesserung des kompletten Stapels obwohl mit der Schicht spezifische Verbesserungen.

Spaghetti mit Fleischbällchen

Der Begriff "Spaghetti mit Fleischbällchen" ist ein abschätziger in der Informatik gebrauchter Begriff, um lose gebaute objektorientierte Programmierung (OOP) zu beschreiben, die abhängig vom Verfahrenscode bleibt. Es kann das Ergebnis eines Systems sein, dessen Entwicklung einen langen Lebenszyklus, Spracheinschränkungen, Mikrooptimierungstheater oder einen Mangel an zusammenhängenden Codierstandards eingeschlossen hat.

Auf einigen Sprachen sind OOP Eigenschaften nur in späteren Spezifizierungen verfügbar. Bemerkenswerte Beispiele davon schließen Visuell Grundlegend, und PHP ein. Andere Sprachen, wie C, verlassen sich auf Funktionszeigestöcke, um OOP - noch das Verlangen des zu Grunde liegenden Verfahrenscodes vorzutäuschen, zu dem sie hinweisen.

Das Verwenden OOP hält einen Code einer Klasse nicht notwendigerweise davon ab, Spaghetti ähnlich zu werden. In diesem Sprachgebrauch beschreiben "Spaghetti" gedrehten, verwirrten und unstrukturierten Code, während "Fleischbällchen" den Gebrauch von Klassenstrukturen (d. h. Gegenstände) anzeigen.

Siehe auch

Links

ist

Verstauen Sie auf der Hochebene / Steganography
Impressum & Datenschutz