Was ist der Spaghetti-Code (und warum du ihn vermeiden solltest)

Was ist der Spaghetti-Code (und warum du ihn vermeiden solltest)

  • ITOps & DevOps
6 Minuten Lesezeit Aktualisiert Jun 17, 2020

Auf einen Blick: Spaghetti-Code ist schlecht strukturierter Code, der die Wartung erschwert und zu Projektfehlern führen kann. Er entsteht typischerweise aus unklaren Projektumfangen und Vernachlässigung von Best Practices. Um Spaghetti-Code zu verhindern, sollten Entwickler die Architektur priorisieren, regelmäßige Unit-Tests durchführen und leichte Frameworks nutzen.

  • Spaghetti-Code behindert die Wartbarkeit von Projekten.
  • Sie entsteht durch schlechte Planung und Programmierpraktiken.
  • Vermeidungsstrategien umfassen sorgfältige Architektur und Unit-Testing.

Spaghetti-Code ist kein liebevoller Begriff. Es ist ein Wort, das eine Art von Code beschreibt, von dem manche sagen, dass er zum Ausfall Ihrer Technologieinfrastruktur führen kann. Trotz der Warnungen vor Spaghetti-Code stehen viele Unternehmen vor Problemen, die mit dem Satz von Prozessen und Fehlern verbunden sind, die Spaghetti-Codierung ausmachen. Dies geschieht aus verschiedenen Gründen, kann aber Ihrer Gesamtinfrastruktur schaden, glauben die meisten Experten. In diesem Artikel sprechen wir über Spaghetti-Code als Konzept und was er für Ihre Organisation bedeutet.

Was ist der Spaghetti-Code?

Spaghetti-Code ist ein abwertender Informationstechnologie-Jargon, der durch Faktoren wie unklaren Projektumfang, mangelnde Erfahrung und Planung, Unfähigkeit, ein Projekt an Programmierregeln anzupassen, sowie eine Reihe anderer scheinbar kleiner Fehler verursacht wird, die sich ansammeln und Ihren Code im Laufe der Zeit weniger effizient machen. Typischerweise tritt Spaghetti-Code auf, wenn mehrere Entwickler über Monate oder Jahre an einem Projekt arbeiten und dabei Code und Softwareumfang hinzufügen und ändern, um die bestehende Programmierinfrastruktur zu optimieren. Dies führt meist zu etwas ungeplanten, verworrenen Codingstrukturen, die GOTO-Anweisungen gegenüber Programmierkonstrukten bevorzugen, was zu einem Programm führt, das langfristig nicht wartbar ist. Für Unternehmen ist das Erstellen eines Programms, das nach Jahren der Arbeit (und des Geldes) unwartbar wird, in Projektkosten, IT-Manager und andere Ressourcen geflossen. Außerdem frustriert es Programmierer, stundenlang an der Programmierung einer Infrastruktur zu arbeiten, nur um dann etwas zu verlieren, und dann müssen sie jahrelange Arbeit, oft von verschiedenen Entwicklern verwaltet, durchforsten, um das Problem zu identifizieren – falls sie es überhaupt lösen können. Aus diesem Grund gilt Spaghetti-Code als lästig für Entwickler und IT-Manager, und für Unternehmensunternehmen, die ihre Ressourcen verwalten müssen, sollte er komplett vermieden werden.

Geschichte des Spaghetti-Codes

Obwohl nicht klar ist, wer den Begriff "Spaghetti-Code" prägte oder wann, wurde er Ende der 1970er Jahre verwendet, um ein verworrenes Durcheinander von Code ohne Struktur zu beschreiben. In den 80er Jahren wurde der Begriff mindestens einmal in einem Whitepaper verwendet, um das Code- und Fixmodell zu beschreiben, das zur Entwicklung der Wasserfallprogrammierung führte. Die überwiegende Mehrheit der Bücher aus jener Zeit bezeichnet ihn jedoch als ein Nest aus chaotischem Code, dem die nötige Struktur fehlte, um effektiv skalieren zu können. Eine Satire aus dem Jahr 1981 brachte die Idee auf, dass die Gründer von IBM Spaghetti-Code mochten, weil sie FORTRAN entwickelten. In Richard Hammings Buch The Art of Doing Science and Engineering: Learning to Learn sagte er: "Wenn man bei der Behebung eines Fehlers einige ausgelassene Anweisungen einfügen wollte, dann nahm man die unmittelbar vorhergehende Anweisung und ersetzte sie durch eine Übertragung in einen leeren Raum. Dort gab man die gerade überschriebene Anweisung ein, fügte die gewünschten Anweisungen hinzu und folgte dann eine Übertragung zurück ins Hauptprogramm. "So wurde das Programm bald zu einer Abfolge von Sprüngen der Steuerung an fremde Orte. Wenn, wie fast immer, Fehler bei den Korrekturen auftraten, verwendete man denselben Trick erneut und nutzte einen anderen verfügbaren Speicherplatz. Dadurch nahm der Steuerweg des Programms durch den Speicher bald das Aussehen einer Dose Spaghetti an. Warum sie nicht einfach im Befehlslauf einfügen? Weil man dann das gesamte Programm durchgehen und alle Adressen ändern müsste, die sich auf die bewegten Anweisungen bezogen! Alles außer das!"

Wie landet es in Ihrer Infrastruktur?

Spaghettiprogrammierung ist weder sauber noch strukturiert und widerspricht den von Unternehmen entwickelten Umfangen und Modellen; wie kommt sie also dorthin? Spaghetti-Code entsteht, wenn bestimmte Bedingungen erfüllt sind:

  • Ein Programmierer oder Programmierer haben sich nicht darum gekümmert, die Architektur mit Programmierkonstrukten zu feinjustieren, sondern stattdessen auf einfachere oder weniger durchdachte Ansätze gesetzt oder sich einfach in ein Projekt gestürzt und ohne Plan mit dem Programmieren begonnen.
  • Entwicklungs-Best Practices und die meisten optimierten Programmiersprachen ändern sich im Laufe der Zeit, daher sollten bestehende Systeme bei der Weiterentwicklung der Programmierung optimiert werden, um sie sauber und strukturiert zu halten. Wenn dies nicht gelingt, entsteht ein Ökosystem aus Spaghetti-Code.
  • Während Spaghetti-Code nur wenige Stunden nach Beginn eines Projekts entstehen kann, erstreckt es sich im Unternehmensgeschäft oft über einen längeren Zeitraum, in dem verschiedene Programmierer an einem Projekt wechseln.
  • Spaghetti-Code kann auftreten, wenn jemand keine Erfahrung hat und einfachere Techniken wie GOTO-Befehle anwendet, anstatt ausgefeiltere, die die strukturelle Integrität der Programmarchitektur sichern.

Im Allgemeinen ist Spaghetti-Code das natürliche Ergebnis von Unternehmen, wenn sie es versäumen, eine zuverlässige Architektur über die Lebensdauer eines Projekts zu planen.

Spaghetti-Code: Wie man ihn vermeidet

Um ein Wirrwarr aus ineffizientem Spaghetti-Code zu vermeiden, müssen Programmierer:

  • Seien Sie gewissenhaft: In erster Linie sind Sorgfalt und Liebe zum Detail entscheidend. Ein Entwickler muss sich darauf konzentrieren, die beste Architektur für sein Projekt zu schaffen und die Architektur nicht zu überstürzen.
  • Häufige Unit-Tests: Durch regelmäßige Unit-Tests können Sie die Wahrscheinlichkeit verringern, dass Spaghetti-Code auftritt.
  • Überprüfen Sie Ihre Programmierer nochmal: Ein zusätzliches Augenpaar kann helfen; wenn Sie auf Spaghetti-Code stoßen, sprechen Sie ihn sofort an und bitten Sie darum, ihn zu ändern.
  • Verwenden Sie leichte Frameworks: Im Jahr 2020 gibt es eine Reihe von schlanken, leichtgewichtigen Frameworks, die Sie implementieren können. Indem Sie das Framework schlanker halten, bereiten Sie sich für vereinfachte Lösungen vor.
  • Schichten implementieren: In der Praxis helfen Schichten, Spaghetti-Code leichter zu korrigieren, indem sie eine einzelne Schicht statt eines gesamten Programms adressieren.

Verwandte Codetypen

Es gibt einige verwandte Codetypen, die du für weiteres Lernen wiederholen kannst:

  • Ravioli-Code: Dies ist der Begriff für Fehler im objektorientierten Code, die auftreten, wenn Code in einer Klasse leicht verständlich ist, aber nicht im Kontext des gesamten Projekts.
  • Lasagne-Code: Das ist ein Problem, das auftreten kann, wenn man Schichten verwendet, um Spaghetti-Code zu vermeiden, und die Schichten so voneinander abhängig sind, dass ein einziger Bruch in einer Schicht das gesamte Projekt beeinflusst.
  • Pizza-Code: Wenn eine Code-Architektur zu flach ist, nennt man sie Pizza-Code.

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus ITOps & DevOps

Abonnieren Sie The Brief

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Danke

Sie haben The Brief abonniert
Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.