Spaghetti code – Wikipedia, wolna encyklopedia

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

[edytuj | edytuj kod]
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

[edytuj | edytuj kod]
  1. a b Eric S.: The New Hacker's Dictionary, third edition. MIT Press, 1996, s. 420. ISBN 0-262-68092-0. (ang.).