Spaghettikode

Fra Wikipedia, den frie encyklopædi
Gå til: navigation, søg

Spaghettikode er en stærkt nedsættende betegnelse for kildekode til computerprogrammer, der er skrevet usædvanligt rodet og ulæseligt, ofte også ulæseligt for den programmør, der har skrevet programmet. Spaghettikodes modsætning er (bl.a.) struktureret programmering.

Kendetegn for spaghettikode kan være

  • dårlig navngivning af variable og subrutiner
  • spring rundt i programmet på uigennemskuelig vis (brug af GOTO-sætninger, flere indgange eller udgange af subrutiner og lignende)
  • ”snedige” IF-THEN-ELSE konstruktioner inden i hverandre
  • meget lange serier af programinstruktioner, der burde have været opdelt i små, logisk sammenhængende dele
  • koden kan være skrevet med flere sætninger på samme linje eller med misvisende indrykninger. Dette vil ikke genere en compiler, men kan forvirre et menneske.

Visse programmeringssprog såsom BASIC og Fortran har ry for at fremme spaghettikode og for ligefrem at ødelægge unge programmører. Assemblersprog gør det også nemt at skrive spaghettikode. På den anden side kan det hævdes, at programmører, der først har bakset med rodede programmer i BASIC eller assembler, får lært værdien af struktur. Nogle programmører har talt imod programmeringssprog, der er præget af disciplin og slaveri.

Oprindelsen til navnet er usikker. Edsger Dijkstra begyndte i 1968 i en artikel at argumentere mod rodede programmer.[1] Sammenligningen med spaghetti findes i en artikel fra 1977, skrevet af Guy Lewis Steele Macaroni is Better Than Spaghetti i Proceedings of the 1977 symposium on artificial intelligence and programming languages.[2] Og i 1978 blev betegnelsen benyttet i bogen A primer on disciplined programming using PL/I, PL/CS, and PL/CT skrevet af Richard Conway om visse programmer der "have the same clean logical structure as a plate of spaghetti".[3]

Kilder og henvisninger[redigér | redigér wikikode]

  1. ^ Dijkstra, Edsger (1968). Go To Statement Considered Harmful.  [1]
  2. ^ Steele, Guy Lewis (1977). Macaronis is better than spaghetti.  [2]
  3. ^ Conway, Richard (1978). A primer on disciplined programming using PL/I, PL/CS, and PL/CT. Winthrop Publishers. ISBN 0-87626-712-6.