- Plat de spaghetti
-
Programmation spaghetti
La programmation spaghetti ou code spaghetti sont des termes péjoratifs utilisés en programmation. Ils qualifient des programmes dont le code n'est pas clair et qui font un usage excessif de sauts inconditionnels (voir goto), d'exceptions en tous sens, de gestion des événements complexes et de threads divers. En fait, la programmation spaghetti qualifie tout ce qui ne permet pas de déterminer le qui, le quoi et le comment d'une prise de contrôle par une portion de programme (incompréhension du flux de contrôle).
Cette notion s'applique aussi au niveau du flux de données, c'est-à-dire, à tout ce qui ne permet pas de déterminer le qui, le quoi et le comment d’une modification de données. Cette situation est causée par un usage excessif de couplage fort.
La programmation spaghetti est un exemple d'anti-patron.
Exemple de flux de contrôle spaghetti
L'instruction goto (ou ses équivalents) est souvent responsable de la production de code spaghetti. Elle est souvent utilisée dans les langages comme le BASIC ou l'assembleur (dans ce dernier cas les branchements inconditionnels sont cependant inévitables). L'exemple suivant, qui affiche la liste des entiers compris entre 1 et 10 ainsi que leur carré, est un exemple de code spaghetti en BASIC :
10 i = 0 20 i = i + 1 30 IF i <> 11 THEN GOTO 80 40 IF i = 11 THEN GOTO 60 50 GOTO 20 60 PRINT "Programme terminé." 70 END 80 PRINT i & " au carré = " & i * i 90 GOTO 20
Le même résultat est obtenu par le programme suivant, plus respectueux des principes de la programmation structurée :
10 FOR i = 1 TO 10 20 PRINT i & " au carré = " & i * i 30 NEXT i 40 PRINT "Programme terminé." 50 END
Exemple de flux de données spaghetti
10 in:INTEGER 20 out:INTEGER 30 40 PROCEDURE Square 50 out = in * in 60 END PROCEDURE
Le même résultat est obtenu par le programme suivant, plus respectueux des principes de la programmation structurée :
10 FUNCTION Square( in:INTEGER ):INTEGER 30 Square = in * in 20 END FUNCTION
Cas des développements web
Dans les développements web des années 2000 on atteint le paroxysme de la programmation spaghetti : plusieurs langages, plusieurs logiques de flux, mélange des règles de gestion et de la programmation de l'IHM, le tout dans un même programme. Par exemple pour une page web ASP ou ASPX on a:
- Jusqu'à 5 langages (JavaScript + ASP Script + VBScript pour la programmation et HTML + CSS pour la description)
- Deux logiques de déroulement du programme (séquentielle et événementielle).
- Mélange complet de la programmation des règles de gestion du métier et des règles techniques de gestion de l'IHM.
L'impact sur la maintenabilité des programmes est négatif.
- Portail de l’informatique
Catégories : Antipattern | Programmation informatique
Wikimedia Foundation. 2010.