Spagettikod
Den här artikeln behöver källhänvisningar för att kunna verifieras. (2017-03) Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan. |
Undertyp av | • operativ risk • oaktsamhet • försummelse | |
---|---|---|
Har del(ar) | brist, källkod |
Spagettikod är inom datalogin ett nedvärderande men vedertaget uttryck för källkod som använder fasta hopp eller andra förgreningar på ett ostrukturerat sätt. Spagettikod kan åstadkommas också på andra sätt, till exempel via undantagshantering. Strukturen gör det svårt att följa programflödet, vilket i sin tur ökar risken för att buggar introduceras och blir svårare att hitta och åtgärda.
Vissa programspråk, som vissa varianter av BASIC, saknar helt eller delvis operationer för att styra programflödet med slingor och subrutiner, vilket kräver mer disciplin för att spagettikod ska kunna undvikas.
Eftersom risken för buggar ökar vid många ostrukturerade hopp, framför allt när någon annan än den ursprungliga programmeraren ska redigera koden i efterhand så anser vissa programmerare att hopp inte ska användas över huvud taget i programspråk som stöder ett mer strukturerat programmeringssätt. Slingor kan exempelvis göras i många programspråk med instruktioner såsom for, while, until eller liknande. Spagettiprogrammering ses som ett typiskt fall av antimönster.
För applikationer där hög exekveringshastighet är avgörande för programmets funktion kan värdefull tid sparas genom att använda direkta hopp, men ofta går dessa att hantera utan att källkodens struktur lider, till exempel så att dessa avsnitt hålls väl avgränsade och väl kommenterade eller så att optimeringen av koden överlåts till kompilatorn och programmeraren begränsar sig till att beskriva funktionen så att kompilatorn kan optimera bort funktionsanropet. Ofta är också de delar av programmet som är tidskritiska överraskande få.
De flesta mikroprocessorer i sig själva implementerar ofta enbart hopp och villkorliga hopp och kompilatorn översätter de strukturerade looparna till sådana. Begreppet spagettikod handlar alltså om hur källkoden är uppbyggd.
Spagettikod kan också vara en medveten strategi för att försvåra för andra att ta över ens arbete och göra sig oumbärlig för ett företag.
Ett relaterat, om än inte lika vedertaget, begrepp är raviolikod som är motsvarigheten i objektorienterad kod.
Se även
Externa länkar
- Go To Statement Considered Harmful (engelska), digitalisering av Dijkstra, Edsger W. ”Go To Statement Considered Harmful”, från Communications of the ACM, volym 11, nr 3, mars 1968, sid. 147–148
- Computer Sweden
Media som används på denna webbplats
Författare/Upphovsman: Tkgd2007, Licens: CC BY-SA 3.0
A new incarnation of Image:Question_book-3.svg, which was uploaded by user AzaToth. This file is available on the English version of Wikipedia under the filename en:Image:Question book-new.svg
Icon of simple gray pencil. An icon for Russian Wikipedia RFAR page.
Författare/Upphovsman: BizRules.com, Licens: CC BY-SA 4.0
Spaghetti Rules or Business Rules?
What would your company like to order?
This is a conceptual model of business rules and hard-coded, or hard-wired, rules in code. It is also the mental picture that I see when explaining to businesspeople and IT people what spaghetti rules look like.
Is IT still slinging code and serving spaghetti rules, or is The Business fine-dining on business rules?