Spaghetticode

Spaghetticode of kortweg spaghetti is een minachtende term die door computerprogrammeurs wordt gebruikt om broncode aan te duiden met een overdreven complexe, w…

Spaghetticode
Gekookte spaghetti, zoals gebruikelijk in de war, loopt door elkaar loopt en moeilijk te volgen is.

Spaghetticode of kortweg spaghetti is een minachtende term die door computerprogrammeurs wordt gebruikt om broncode aan te duiden met een overdreven complexe, warrige structuur, zodat bijna niet na te gaan is welke delen van het programma wanneer zullen worden uitgevoerd en welke delen van welke andere delen afhankelijk zijn (dependencies).

Wijzigingen zijn daarom moeilijk door te voeren, omdat nooit duidelijk is wat de effecten van een wijziging zullen zijn of omdat een kleine wijziging op de ene plaats wijzigingen op andere plaatsen vereist, die op hun beurt weer andere wijzigingen vereisen, et cetera. Men spreekt in zo'n geval van een maintenance cascade. Spaghetticode is veelal een gevolg van gebrek aan planning of een accumulatie van kortetermijnoplossingen (een kludge in jargon).

In veel spaghetticode wordt veelvuldig gebruikgemaakt van de GOTO-opdracht, een sprong binnen het programma waardoor een opdracht opnieuw wordt uitgevoerd of juist wordt vermeden. Dergelijke sprongen maken het programma onoverzichtelijk. Edsger Dijkstra waarschuwde in 1968 tegen het gebruik van de GOTO-opdracht in zijn artikel ‘Go To Statement Considered Harmful’ (Communications of the ACM 11 (3) (maart 1968), blz. 147–148).

Voorbeeld

Als voorbeeld een stukje spaghetticode in BASIC. Het programma print van de nummers 1 tot en met 10 het kwadraat op het scherm. Merk op dat in de code geen gebruik wordt gemaakt van inspringingen, en dat de GOTO statements een afhankelijkheid van regelnummers hebben. Let ook op de grillige manier waarop de lijn van uitvoering van het ene gedeelte van de code naar het andere springt.

10 i = 0
20 i = i + 1
30 PRINT i; " squared = "; i * i
40 IF i >= 10 THEN GOTO 60
50 GOTO 20
60 PRINT "Program Completed."
70 END

De volgende code is geschreven in een meer gestructureerde stijl. Het programma loopt netjes van boven naar beneden de instructies af en er zijn inspringingen gebruikt om de herhalingen aan te geven.

10 FOR i = 1 TO 10
20     PRINT i; " squared = "; i * i
30 NEXT i
40 PRINT "Program Completed."
50 END

Bij een grotere hoeveelheid code vormt spaghetticode snel een probleem, dat aanzienlijke onderhoudskosten met zich mee kan brengen.

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.