Spagetti kód

A spagetti kód  egy rosszul megtervezett, rosszul strukturált, zavaros és nehezen érthető program , különösen, ha sok GOTO utasítást (főleg visszaugrást), kivételeket és egyéb szerkezetet rontó konstrukciókat tartalmaz [1] . A leggyakoribb programozási anti -minta .

A spagetti kódot azért nevezték így el, mert a program menete olyan, mint egy tál spagetti , azaz kanyargós és csavaros. Néha " kenguru kódnak" ( kenguru kódnak ) hívják a sok "ugró" utasítás miatt.

Manapság a kifejezést nem csak a GOTO-val való visszaélés eseteire alkalmazzák, hanem minden olyan "többszörös linket" tartalmazó kódra is, amelyben ugyanaz a kis töredék számos különböző helyzetben fut le, és nagyon sok különböző logikai funkciót lát el [1] .

A spagetti kód általában előfordul:

nem szándékos elhomályosítás eredménye.

A spagetti kód hibakereshető és megfelelően és nagy teljesítménnyel futtatható, de rendkívül nehéz fenntartani és fejleszteni [1] . A spagetti szerkesztése új funkciók hozzáadására olykor olyan hatalmas lehetőségeket rejt magában az új hibák bevezetésében, hogy a refaktorálás (a spagetti fő gyógymódja) elkerülhetetlenné válik.

Példa

Az alábbiakban egy példa látható a BASIC spagettikódjára, amely egy egyszerű műveletet hajt végre - kinyomtatja a számokat 1-től 10-ig és négyzeteiket. A spagettikód valódi példái sokkal összetettebbek, és több karbantartási problémát okoznak.

10 i = 0 20 i = i + 1 30 , ha i <= 10 , akkor 70 40 , ha i > 10 , akkor 50 50 print " Program kész ." 60 vége 70 print i: " squared = " : i * i 80 goto 20

Ugyanez a kód BASIC nyelven írva a strukturált programozás stílusában :

i = 1 -től 10 -ig print i : " squared = " : i * i next i print "Program kész."

Ugyanaz a funkcionális stílusú kód az iterációs módszerrel, Ruby nyelven írva :

( 1 .. 10 ) . mindegyik { | én | " #{ i } \t squared = #{ i ** 2 } " } elhelyezi a "Program kész."

Kapcsolódó fogalmak

A „spagetti kóddal” analógiaként a programozók még néhány olyan koncepcióval álltak elő, amelyek még nem általánosan elfogadottak.

  • A Ravioli kód egy hatalmas számú független komponensből álló kód, és ahhoz, hogy megértsük, hogyan lehet javítani egy hibát az összetevők találkozásánál, át kell „áttörni” a komponensek közötti interfészeken.
  • A baklava kód vagy lasagna kód olyan kód, amely túl sok (egy adott feladathoz) absztrakciós réteget tartalmaz.
  • A Katamari kód egy olyan kód, amely egykor tiszta volt, de a fejlesztés során olyan funkciókkal borították be, mint egy Playstation játék „katamari” .

Lásd még

Jegyzetek

  1. 1 2 3 John Vlissides, Kyle Brown, Gerard Mészáros AntiPatterns: The Survival Guide. Spagetti kód archiválva 2021. január 27-én a Wayback Machine -nél .

Linkek