Programmation spaghetti
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article 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 (L’usage est l'action de se servir de quelque chose.) excessif de sauts inconditionnels (voir Goto), d'exceptions en tous sens (SENS (Strategies for Engineered Negligible Senescence) est un projet scientifique qui a pour but l'extension radicale de l'espérance de vie humaine. Par une évolution progressive allant du ralentissement du vieillissement,...), de gestion des événemments alambiqués et de threads divers. En fait, la 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),...) qualifie tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) ce qui ne permet pas de déterminer le qui, le quoi et le comment d'une prise de contrôle (Le mot contrôle peut avoir plusieurs sens. Il peut être employé comme synonyme d'examen, de vérification et de maîtrise.) par une portion de programme.

Cette notion s'applique aussi au niveau du flux (Le mot flux (du latin fluxus, écoulement) désigne en général un ensemble d'éléments (informations / données, énergie, matière, ...) évoluant dans un sens commun. Plus précisément le...) de données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.) (pas seulement au flux de contrôle). Il qualifie également des programmes dont le code fait un usage excessif de couplage fort.

La programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel...) spaghetti est un exemple d'anti-patron.

Exemple de flux de contrôle spaghetti

L'instruction (Une instruction est une forme d'information communiquée qui est à la fois une commande et une explication pour décrire l'action, le comportement, la méthode ou la tâche qui devra commencer, se terminer, être conduit, ou exécuté.) goto (L’instruction goto (de l’anglais go to, en français aller à) est une instruction présente dans de nombreux langages de programmation. Elle est utilisée pour réaliser des sauts inconditionnels dans...) (ou ses équivalents) est souvent responsable de la production de code spaghetti. Elle est souvent utilisée dans les langages comme le BASIC (En programmation, BASIC est un acronyme pour Beginner's All-purpose Symbolic Instruction Code. qui désigne une famille de langages de programmations de haut niveau.) 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é (Un carré est un polygone régulier à quatre côtés. Cela signifie que ses quatre côtés ont la même longueur et ses quatre angles la même mesure. Un carré est à la fois un...), 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 (NeXT Computer, Inc (devenue NeXT Software, Inc) était une entreprise d’informatique fondée par Steve Jobs en 1985 après son départ d’Apple.) 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 (Un mélange est une association de deux ou plusieurs substances solides, liquides ou gazeuses qui n'interagissent pas chimiquement. Le résultat de l'opération est...) 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 (Une page Web est une ressource du World Wide Web conçue pour être consultée par des visiteurs à l'aide d'un navigateur Web. Elle a une adresse Web....) ASP ou ASPX on a:

  • Jusqu'à 5 langages de programmation (html + javascript (JavaScript est un langage de programmation de scripts principalement utilisé dans les pages web interactives mais aussi coté serveur. C'est un langage orienté objets...) + 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 1.383 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique