Spaghetti code
Spaghetti code – w informatyce termin określający skomplikowany, trudny do zrozumienia kod źródłowy programu[1]. Z takiego rodzaju kodu kompilowano programy we wczesnych językach proceduralnych, typu Fortran czy BASIC. Było to jeszcze przed powstaniem metody programowania strukturalnego.
Używano wielu instrukcji warunkowych i następnych w nich zagnieżdżonych, konstrukcji GOTO czy wyjątków[1]. Droga przez kolejne rozkazy była tak poplątana, że odczytanie takiego kodu i zrozumienie go było bardzo uciążliwe, a ewentualne modyfikacje zwykle prowadziły do błędów w programie.
Programowanie strukturalne, w myśl zasady od ogółu do szczegółu, wprowadziło uporządkowanie w procesie tworzenia programów. Taka metodologia programowania polega na dzieleniu zadania do wykonania na mniejsze podzadania, aż do uzyskania wystarczająco prostych do realizacji fragmentów. Łatwiej wtedy jest zaimplementować w poszczególnych modułach procedury, które w całości dadzą pożądany efekt. W praktyce zazwyczaj dzieli się program na funkcje, z których każda realizuje określony cel i może być wywoływana wielokrotnie. Tak napisany kod jest bardziej czytelny.
Przykłady
10 INPUT count 20 LET steps = count 30 LET bbk = 0 40 LET bk = 1 50 IF count < 1 THEN GOTO 100 60 LET k = bbk + bk 70 LET bbk = bk 80 LET bk = k 90 LET count = count - 1 100 PRINT "Wyraz nr "; steps - count; "ciagu Fibonacciego wynosi: "; k 110 IF count > 0 THEN GOTO 50 120 END
Program wyświetla podaną przez użytkownika liczbę pierwszych wyrazów ciągu Fibonacciego. W kilku liniach trywialnego programu dwukrotnie użyto bezwarunkowej instrukcji skoku – GOTO. Przy bardziej złożonym kodzie i większej liczbie skoków pojawi się problem z jego zrozumieniem.
Ten sam cel zrealizowany przez programowanie strukturalne (w C):
scanf ("%d",&steps);
for (count = 0; count < steps; count++){
static int bbk = 0, bk = 1;
int k = bbk + bk;
bbk = bk; bk = k;
printf ("Wyraz nr %d ciagu Fibonacciego wynosi: %d\n",
count + 1,k);
}
Poszczególne kroki wykonywane są w przejrzystej i formalnej pętli. Ciąg instrukcji do wykonania w programowaniu strukturalnym nie może być dowolnie zmieniany, „przejścia” do poszczególnych bloków są obsługiwane przez zaimplementowane konstrukcje (np. for, while, do while czy if else).
Przypisy
- ↑ a b Eric S.: The New Hacker's Dictionary, third edition. MIT Press, 1996, s. 420. ISBN 0-262-68092-0. (ang.).
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.
- 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:
- 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.
- 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.
- 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.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.