{"id":8440,"date":"2019-06-06T13:51:42","date_gmt":"2019-06-06T11:51:42","guid":{"rendered":"https:\/\/www.itech-progress.com\/?p=8440"},"modified":"2026-04-07T10:21:44","modified_gmt":"2026-04-07T08:21:44","slug":"anti-pattern-spaghetticode","status":"publish","type":"post","link":"https:\/\/www.itech-progress.com\/en\/anti-pattern-spaghetticode\/","title":{"rendered":"Anti Pattern: Spaghetticode"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;section&#8221; _builder_version=&#8221;3.22.3&#8243; min_height=&#8221;439px&#8221; custom_margin=&#8221;||-55px|||&#8221; custom_padding=&#8221;0px||0px|||&#8221;][et_pb_row custom_margin=&#8221;|auto|-61px|auto||&#8221; admin_label=&#8221;row&#8221; _builder_version=&#8221;3.22.3&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; min_height=&#8221;416px&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.0.47&#8243;][et_pb_text _builder_version=&#8221;3.22.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; custom_margin=&#8221;||-2px|||&#8221;]<\/p>\n<p style=\"text-align: justify;\">Du stehst vor einem Problem und hast das gute Gef\u00fchl, es durch deinen Erfahrungsschatz schnell und nachhaltig l\u00f6sen zu k\u00f6nnen? Besser geht\u2019s gar nicht!<\/p>\n<p style=\"text-align: justify;\">Aber: \u201eF\u00fcr jedes Problem gibt es eine L\u00f6sung, die einfach, klar und falsch ist\u201c, das wusste damals schon der Schriftsteller Henry Louis Mencken.\u00a0Manchmal erkennt man leider erst hinterher, wenn der Ansatz bereits in die Tat umgesetzt wurde, dass das L\u00f6sungsmuster nicht die richtige Antwort liefern kann. Diese Form eines schlechten L\u00f6sungsmusters nennt man in der Softwareentwicklung <strong>Anti Pattern.<\/strong><\/p>\n<p style=\"text-align: justify;\">ITech Progress m\u00f6chte mit Beitr\u00e4gen rund um Anti Pattern g\u00e4ngige Fehler in der Softwareentwicklung aufzeigen und Tipps geben, wie man sie zuk\u00fcnftig vermeidet beziehungsweise nachtr\u00e4glich behebt. Bei unserer 3-t\u00e4gigen\u00a0<span>Grundausbildung f\u00fcr Softwarearchitekten, dem <a href=\"https:\/\/www.itech-progress.com\/portfolio-item\/isaqb-foundation-level\/\">Foundation Level Training<\/a>, bekommst du das n\u00f6tige Know How, um von Anfang an gute und \u00fcberschaubare L\u00f6sungsmuster zu entwickeln. Wer eine bestehende Architektur systematisch verbessern m\u00f6chte, dem empfehlen wir unser Advanced Level Training <a href=\"https:\/\/www.itech-progress.com\/portfolio-item\/isaqb-improve\/\">IMPROVE &#8211; Evolution und Verbesserung von Softwarearchitekturen<\/a>.<\/span><\/p>\n<h2 style=\"text-align: justify;\">Spaghetticode<\/h2>\n<p style=\"text-align: justify;\">Was zugegebenerma\u00dfen auf den ersten Blick wie eine italienische Geheimdienstmission klingt, ist der Titel des ersten Anti Patterns, den wir vorstellen m\u00f6chten.<\/p>\n<p style=\"text-align: justify;\"><strong>Beschreibung<\/strong><\/p>\n<p style=\"text-align: justify;\">Eine fortschreitende Erweiterung eines Systems erfordert auch eine kontinuierliche Anpassung der Anwendungsstruktur, da diese sonst mit der Zeit erodiert.\u00a0<span style=\"font-size: 18px;\">Spaghetticode bezeichnet daher Software-Quellcode, der sehr komplizierte und undurchschaubare Strukturen zeigt und meist vom Programmierer selbst nach einigen Wochen nicht mehr verstanden wird.<\/span><\/p>\n<p style=\"text-align: justify;\"><strong>Auswirkungen<\/strong><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 18px;\">Ein Spaghetticode kann unterschiedliche Ursachen haben. Meist tendieren unerfahrene Programmierer dazu Spaghetticodes zu erstellen, da es leichter ist Programmcodes anzuf\u00fcgen, statt den bestehenden zu verstehen und zu modifizieren. Eine h\u00e4ufige Erweiterung des Quellcodes, ohne die Durchf\u00fchrung eines Refactorings, kann ebenfalls zu einem Spaghetticode f\u00fchren. Der Spaghetticode l\u00e4sst sich aufgrund seiner wirren Struktur nur noch sehr schwer ver\u00e4ndern, verbessern oder optimieren. Auch eine Wiederverwendung wird nahezu unm\u00f6glich.<\/span><\/p>\n<p style=\"text-align: justify;\"><strong>L\u00f6sung<\/strong><\/p>\n<p style=\"text-align: justify;\">Am besten l\u00e4sst sich dieses Problem durch inkrementelles Refactoring beheben. Refactoring befasst sich mit der \u00c4nderung von internen Strukturen eines Programms, ohne dabei dessen extern sichtbares funktionales Verhalten oder dessen bestehende Funktionalit\u00e4t zu \u00e4ndern.<\/p>\n<p style=\"text-align: justify;\">Ein weiterer Ansatz zur Vermeidung dieses Problems w\u00e4re der Einsatz von testgetriebener Softwareentwicklung (TDD). Hierbei werden erst die Softwaretests und anschlie\u00dfend der Programmcode erstellt, bis nach abschlie\u00dfendem Testdurchlauf alle Tests bestanden werden.<\/p>\n<p style=\"text-align: justify;\">Der Entwickler formuliert seine Erwartungen vorab in den Code, doch dazu muss er diese Erwartungen kennen. Daher sollte der Implementierung die Modellierung zum besseren Verst\u00e4ndnis der Zust\u00e4ndigkeiten vorausgehen.<\/p>\n<p><a href=\"https:\/\/de.slideshare.net\/ufried\/life-after-microservices\" target=\"_blank\" rel=\"noopener noreferrer\"><\/a><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Du stehst vor einem Problem und hast das gute Gef\u00fchl, es durch deinen Erfahrungsschatz schnell und nachhaltig l\u00f6sen zu k\u00f6nnen? Besser geht\u2019s gar nicht! Aber: \u201eF\u00fcr jedes Problem gibt es eine L\u00f6sung, die einfach, klar und falsch ist\u201c, das wusste damals schon der Schriftsteller Henry Louis Mencken.\u00a0Manchmal erkennt man leider erst hinterher, wenn der Ansatz [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":14482,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[565],"tags":[],"class_list":["post-8440","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwareentwicklung"],"_links":{"self":[{"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/posts\/8440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/comments?post=8440"}],"version-history":[{"count":4,"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/posts\/8440\/revisions"}],"predecessor-version":[{"id":53858,"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/posts\/8440\/revisions\/53858"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/media\/14482"}],"wp:attachment":[{"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/media?parent=8440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/categories?post=8440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itech-progress.com\/en\/wp-json\/wp\/v2\/tags?post=8440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}