Spagettikod
Spagettikodär en benämning på dåligt strukturerad programkod till datorer, ofta innehållande många och onödiga hopp fram och tillbaka mellan olika delar av programmet.I t ex BASIC berodde det på alltför flitigt användande av GOTO, IF-THEN-hopp och GOSUB tillsammans med bristande kommentarer och otydbara korta variabelnamn (detta ofta på grund av minnesbrist). En ytterligare anledning till att just Basic gav mer spaghettikod än andra språk var att programhoppen var radnummerbaserade i de tidigare versionerna, så att man inte enkelt kunde se vart eller varför programmet skulle hoppa.Att tyda sådan kod blir ungefär som att följa varje enskild spaghetti genom en hel portion... Läsbarheten förbättrades avsevärt när LABELs infördes, även om strukturen ofta var lika dålig.
Edsger Dijkstra skrev tidigt en artikel som varnade för detta överdrivna användande av programhopp, . Motsvarigheten inom objektorienterad programmering heter raviolikod.
Spagettikod är inte nödvändigtvis dålig, den kan vara både effektiv och minnesbesparande, något som var nödvändigt med de tidiga datorerna, problemet ligger främst i läsbarheten och därmed möjligheterna till underhåll (vidareutveckling och korrigering av buggar) och i slutänden således kostnaden för att upprätthålla programmet.
Exempel
Startlabel: GOTO Skriv_ut Beräkna: X=X+1 GOTO Mata_ut Skriv_ut: PRINT "HEJ "; GOTO Beräkna Mata_ut: OUT 2,65 IF X < 4 THEN GOTO Startlabel ELSE GOTO Mata_ut END
Se även
- BASIC
- Spagetti
- http://info.astrian.net/jargon/Hacker_Folklore/The_Story_of_Mel.html
Goto är en styggelse och bör bekämpas med näbbar och klor. Dessutom är koden inte kommenterad, vilket ökar på spagettikänslan /Tycho Brahe
Absolut! :-) Fast koden ovan är kort så är det mycket svårt att följa den vilket är typiskt för spagetti. Vad gör programmet egentligen? är en befogad fråga. // Solkoll
Jag tycker det ser ut som det kommer in i en oändlig slinga. Men jag kan ha missat nåt, och det var ju meningen med exemplet. :-) / TB
Nejdå, När X=>4 så loopar koden i "Mata_ut" vilket programmeraren förmodligen inte har tänkt sig, det är sådana trassel man hamnar i när man inte skriver strukturerat. När jag en gång i tiden (1983) började programmera så skrev jag uteslutande spagettikod vilket resulterade i att programmen blev väldigt buggiga och svåra att vidareutveckla. Det var först när jag började skriva i GFA BASIC på min Atari ST som det blev lite stil på hacken, det för att editorn i GFA automatiskt skapar strukturerad kod vilket var mycket nyttigt. // Solkoll (som vill se fler sådana editorer)
All användning av goto behöver nödvändigtvis inte vara av ondo. Det gäller speciellt om det är viktigare att programmet körs snabbt än att det är elegant skrivet, som i .
Enstaka goto kan också vara en bra lösning i vissa fall, även när strukturen kan prioriteras. Tycker jag.
Artikeln skriven 2009-01-15 av Learning4sharing
Inga kategorier för denna artikel än...Intresserad av fler artiklar?
DarkBASIC ClassicDarkBASIC Professional
Grafisk miniräknare
Peek
Poke
Mnemonic
Iteration
Måttenheten erlang
Agner Krarup Erlang