Spaghettikode

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

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

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

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

  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.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.