Spaghettikode

Fra Wikipedia, den frie encyklopædi

Spaghettikode (på engelsk: spaghetti code) er et velkendt (oftest, men ikke altid nedsættende) udtryk eller begreb for kildekode der er skrevet på en måde, så det ikke har samme rene, ensartede og logiske struktur hele vejen gennem koden.

Det vil derfor ofte blive oplevet som kryptisk, fordi det både er svært læseligt og svært forståeligt. (Som regel også efter kort tid, af den programmør der har skrevet det)

Dermed vil spaghetti kode også umiddelbart være meget svært at vedligeholde og bygge videre på.

Spaghetti kode kan være forårsaget af flere faktorer, det kan f.eks. være: flygtige projekt krav, manglende programmerings stil og/eller regler eller at forfatteren har utilstrækkelig evne eller erfaring.

Modsætningen til Spaghettikode kan blandt andet være struktureret programmering.

Begrebets oprindelse[redigér | rediger kildetekst]

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]

Kendetegn[redigér | rediger kildetekst]

Kendetegn for spaghettikode kan være

  • Generel mangel på struktur og/eller kodnings stil.
  • Dårlig navngivning af variabler, subrutiner / funktioner
  • Ulogiske og svært gennemskuelige referencer, hop og kald på kryds og tværs af koden. (Brug af GOTO[1]-sætninger, flere indgange eller udgange af subrutiner og lignende)
  • Snedige/Smarte IF-THEN-ELSE konstruktioner. (F.eks. flere If-Then-Else udsagn inden i hinanden)
  • Lange serier af program instruktioner, der burde have været opdelt i små og logisk sammenhængende dele. (Mangel på subrutiner/funktioner)
  • Koden kan være skrevet med flere logiske udsagn eller operationer på samme linje eller med misvisende indrykninger af hvad koden gør. (Dette vil ikke genere en compiler, men kan forvirre et menneske)

Programmeringssprog[redigér | rediger kildetekst]

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[af hvem?], 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[hvem?] har talt imod programmeringssprog, der er præget af disciplin og slaveri.

Kilder og henvisninger[redigér | rediger kildetekst]

  1. ^ a b Dijkstra, Edsger (1968). Go To Statement Considered Harmful. [1] Arkiveret 10. februar 2018 hos Wayback Machine
  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.