Cod spaghete
Codul spaghetti este un termen derogatoriu pentru codul sursă al acelor programe de calculator care au o structură complexă și / sau de neînțeles de control al fluxului, cu o utilizare exagerată și incorectă a go to , excepții , fire și alte construcții de ramificare .) Nestructurate. [1] [2]
Numele său derivă din faptul că aceste tipuri de cod tind să semene cu o farfurie de spaghete, care este o grămadă de fire împletite și înnodate.
Codul spaghetti este un exemplu de anti-model .
Exemplu
Următorul program este un exemplu banal de cod spaghetti în BASIC . Tipărește secvența numerelor de la 1 la 10 și pătratul lor pe ecran. Observați cum instrucțiunile „ GOTO ” introduc o dependență de numerele de linie ale programului și cum fluxul de execuție sare imprevizibil dintr-o zonă în alta. În practică, în programele reale aparițiile codului spaghetti sunt mult mai complexe și pot crește semnificativ costurile de întreținere ale unui program.
10 dim the
20 the = 0
30 the = the + 1
40 dacă the <= 10 atunci mergi la 70
50 imprimare „Programul s-a încheiat”.
60 Sfârșit
70 imprimare the & "pătrat =" & the * the
80 mergi la 30
Iată un exemplu de cod echivalent scris într-un stil de programare structurat:
funcţie pătrat ( i )
pătrat = the * the
Sfârșit funcţie
dim the
pentru the = 1 la 10
imprimare the & "pătrat =" & pătrat ( i )
Următorul
imprimare „Programul s-a încheiat”.
Acest program efectuează și salturi, dar în acest caz sunt salturi previzibile și formalizate. Acest lucru se datorează faptului că pentru bucla și funcțiile definesc standardizate fluxurilor de control , în timp ce goto declarații încurajează fluxurile de control arbitrar.
Notă
- ^ (EN) Ce este codul spaghetti? , la stackoverflow.com , 28 octombrie 2010. Adus pe 28 septembrie 2016 .
- ^ (EN) Spaghetti Code , pe gnu.org, aprilie / mai 1992. Accesat la 28 septembrie 2016.
Elemente conexe
linkuri externe
- (RO) Accesați declarația considerată dăunătoare . Descrierea clasică a codului spaghetti de către Edsger Dijkstra .
- ( RO ) Daily WTF - Perversiuni curioase în tehnologia informației , pe thedailywtf.com .