Najlepsze pytania
Chronologia
Czat
Perspektywa

Spaghetti code

Z Wikipedii, wolnej encyklopedii

Remove ads
Remove ads

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.

Remove ads

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).

Remove ads

Przypisy

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads