Spaghetti code: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
VolkovBot (dyskusja | edycje)
m robot dodaje: ar:رماز متشابك
MauritsBot (dyskusja | edycje)
m robot dodaje: de:Spaghetticode
Linia 57: Linia 57:


[[ar:رماز متشابك]]
[[ar:رماز متشابك]]
[[de:Spaghetticode]]
[[en:Spaghetti code]]
[[en:Spaghetti code]]
[[es:Código spaghetti]]
[[es:Código spaghetti]]

Wersja z 10:46, 25 cze 2009

Spaghetti code- ten termin określa skomplikowany, trudny do zrozumienia kod źródłowy programu. Z takiego kodu skompilowano wiele programów w starszych 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. 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 znaczne uporządkowanie w procesie tworzenia programów.

W skrócie taka metodologia programowania polega na dzieleniu zadania do wykonania na mniejsze, aż do uzyskania wystarczająco prostych fragmentów do zrealizowania. Ł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 już znacznie 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 ilość 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",
       steps - count,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).

Zobacz też