Programmation spaghetti - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs est disponible ici.
Plat de spaghetti nature.
Plat de spaghetti nature.

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énemments alambiqués 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.

Cette notion s'applique aussi au niveau du flux de données (pas seulement au flux de contrôle). Il qualifie également des programmes dont le code fait 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 de programmation (html + javascript + ASP Script + vbscript + CSS)
  • 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.

Page générée en 0.082 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise