Code spaghetti : une histoire d'amour et de haine

Ah les spaghettis, sacrément délicieux lorsqu'ils sont recouverts de sauce marinara, de pesto ou de sauce crémeuse pour pâtes - horrible lorsqu'ils ont un rapport quelconque avec mes lignes de code. Cet article est consacré à ma relation (d'amour ?) de haine avec le code spaghetti.

J'espère qu'à la fin de l'article, vous détesterez le code spaghetti autant que moi, et que nous pourrons nous consoler mutuellement de notre expérience commune. Si ce n'est pas le cas, j'espère au moins que vous aurez appris quelque chose, ou peut-être même que vous aurez ri !

Dans cette histoire d'amour et de haine du Code Spaghetti...

Alors commençons, qu'est-ce que le code spaghetti 🙄 ?

C'est ce qui arrive lorsque vous écrivez du code qui ne respecte pas les bonnes pratiques de développement logiciel. À la fin de cet article, j'espère que vous aurez compris ce qu'est le code spaghetti, ou du moins à quoi il ressemble (et ce qu'il ne faut pas faire).

La signification formelle du code spaghetti est ce qui se passe lorsque vous avez ce que l'on appelle des dépendances profondes ou larges. Ce que je veux dire, c'est que votre code dépend de trop ou trop peu de parties de votre application pour fonctionner correctement.

Mais il existe de nombreuses idées différentes sur ce qui constitue un code spaghetti. Je pense que ma définition préférée vient d'Alex Martelli, "Le code spaghetti est ce qui arrive quand on n'obéit pas aux règles de la décomposition descendante appropriée".

Pour ceux qui ne sont pas familiers avec le terme " descendant ", permettez-moi de citer Wikipédia à ce sujet : "La conception descendante, également appelée conception hiérarchique, commence par définir des modules de haut niveau et successivement des sous-modules de niveau inférieur jusqu'à ce que les routines individuelles soient définies."

Cela signifie qu'un morceau idéal de spaghetti passera de ce qui est actuellement écrit, à ce que le code devrait faire, en suivant ces étapes :

1) Identifiez ce que fait ce morceau de spaghetti.

2) Si ce qu'il fait actuellement n'est pas ce qu'il devrait faire, réécrivez-le pour qu'il fasse ce qu'il doit faire (cette étape peut être décomposée en ce que vous avez besoin que votre code fasse).

3) Ecrivez le code.

4) Répétez jusqu'à ce que tous les spaghettis aient été remplacés par un code non spaghetti.

Cependant, la plupart du temps, les gens ignorent les points 3 et 4 et passent directement au point 2 ou 1 (généralement le point 1), puis commencent à coder comme des savants fous sans aucun égard pour les pratiques de code propre. Quelques mois plus tard, ils se retrouvent avec ce qu'on appelle communément du code spaghetti.

Comment identifier le code spaghetti ?

Tout d'abord, si votre code ressemble à un fouillis difficile à suivre, c'est probablement votre premier indice. Pour des codes spaghetti plus difficiles à identifier, voici d'autres indices :

  • Si l'édition de votre code, ou le débogage, vous cause une immense frustration, il y a de fortes chances que ce soit du code spaghetti.
  • Si aucun développeur ne veut travailler avec vous sur un projet particulier ou ne veut examiner votre demande de relations publiques, il y a de fortes chances que le code soit spaghetti.
  • Si votre responsable a régulièrement des accès de colère contre vous, il est probable que vous écrivez beaucoup de code spaghetti.

Ne vous inquiétez pas si l'un de ces exemples s'applique à vous, ce qui compte c'est ce que vous pensez de votre code spaghetti - il est probable que ce que vous pensez être mauvais maintenant sera en fait bien pire après avoir lu cet article.

Alors, à quoi ressemble un code spaghetti ?

Cela dépend du langage dans lequel vous écrivez et du framework/libs utilisé. Ici, je vais montrer un code spaghetti écrit en JavaScript en utilisant jQuery comme exemple :

function KFCSecretMenu() { //constructeur

this.getKrushers = function() {

} } $(document).ready(function(){ //event listener for DOM Ready $(‘.welcome’).click(function (){ //event listener for click on element with class name of welcome $(‘.menu-item’).addClass(‘active’); //class to be added if the submenu is opened.

$(‘.menu-item’).find(‘.description’).slideDown(); //sliding down effect for description text }) }); function MenuItemClicked (e) { var itemID = $(e.target).parent().attr(‘id’); //gets ID of parent menu item var description = $(e.target).next().text() KFCSecretMenu.getKrushers({‘itemID’:itemID,’description’:description}); //calling function below }

En suivant ? Non, c'est bien des spaghettis ! 🕵️

Nous allons examiner ce qui rend ce morceau de code spaghetti si mauvais, ce qui le rend plus spaghettique que les autres, et ce que vous pouvez faire pour le corriger. Qu'est-ce qui rend le code spaghetti si mauvais ? Je pense que c'est la liste la plus utile de ce qui fait du code spaghetti ce qu'il est : Fonctions, méthodes et variables dupliquées ou trop complexes Structures difficiles à suivre et/ou non indentées Fonctions difficiles à suivre et/ou longues Espace blanc difficile à lire Logique difficile à suivre Manque de commentaires Styles de codage inhabituels (en essayant trop fort) Bons noms de variables.

Il y a aussi d'autres choses qui feront de votre code un fouillis, mais qui ne sont pas nécessairement considérées comme du code spaghetti : Des algorithmes inefficaces Une taille de fichier importante Un logiciel mal conçu Un manque de tests Le code spaghetti est différent selon le langage, le framework et les librairies utilisés - ce qui peut être spaghetti dans un langage peut ne pas l'être dans un autre. C'est pour cela qu'il est difficile de définir ce qu'est un code spaghetti. Ce que vous devez faire, c'est réfléchir à ce qui aurait été un code spaghetti pour vous il y a quelques années : quels étaient les plus gros problèmes de votre code ? Vous avez probablement commis certaines des erreurs de la liste ci-dessus, alors commencez à comparer ce qui était mauvais dans ces anciens morceaux de code et essayez de garder cette liste à l'esprit pendant que vous lisez cet article.

Vous avez donc identifié votre code spaghetti, comment le traiter ?

Quelques points importants à noter avant de commencer à discuter de la façon de transformer notre morceau de spaghetti... euh, je veux dire de code, en ce qu'il devrait être :

Note 1 : Il existe des centaines (voire des milliers) de façons de NE PAS écrire votre code. J'essaie de rester aussi simple que possible, le contexte de ce que j'écris ici est pour ceux qui ont une connaissance très basique de la façon d'écrire du code. Vous seriez en fait surpris de ce que vous pouvez faire en ajoutant simplement des espaces blancs et des commentaires !

Note 2 : Il est essentiel que vous compreniez ce que vous faites avant d'essayer de réparer du code spaghetti vous-même - sinon vous ne ferez qu'empirer les choses ! Si ce n'est pas le cas, relisez cet article jusqu'à ce que vous compreniez, puis revenez ici.

Note 3 : Nous cherchons à savoir ce qui rend vos spaghettis désordonnés en ce moment, mais nous ne cherchons pas à savoir ce qui aurait pu causer ce désordre en premier lieu (et qui devrait donc nous faire réfléchir à deux fois avant d'ouvrir notre éditeur).

Quels sont les avantages du code spaghetti ?

Rien. Point suivant !

Comment éviter un futur code spaghetti ?

En plus de déménager en Italie et d'avoir un Italien très en colère qui vous frappe sur la tête avec un tas de spaghettis crus chaque fois que vous écrivez une ligne de code malpropre, vous pouvez essayer ces choses...

  • Une bonne façon d'éviter le code spaghetti est de garder vos fonctions et méthodes courtes. Cela signifie qu'une fonction ne doit faire que ce qu'elle est censée faire, il n'y a pas besoin d'une fonction qui fait 10 choses différentes ou qui a 100 lignes - supprimez ce qui n'est pas nécessaire !
  • Une autre astuce pour éviter le code spaghetti est de ne pas modifier ce qui a été fait - ce que je veux dire par là est que vous devriez essayer de ne pas avoir d'imbrication profonde de boucles dans d'autres boucles, ou en d'autres termes : n'imbriquez pas ce qui n'a pas besoin d'être imbriqué !
  • N'oubliez pas non plus le formatage du code, l'espace blanc et l'indentation peuvent faire des miracles pour un code spaghetti ! Plus le code est beau, plus il sera facile à lire.
  • Rétros : faites toujours le point sur ce qui s'est bien passé afin d'en assurer le suivi et de le mettre en œuvre la prochaine fois !
  • Vous pouvez aussi améliorer votre codage
  • Un dernier conseil lorsque vous planifiez ce à quoi vous voulez que votre code spaghetti ressemble, essayez de dessiner des graphiques de ce que vous voulez qu'il fasse au lieu d'écrire votre code directement dans votre éditeur (ce qui signifie regarder ce que chaque fonction doit faire avant de l'implémenter réellement). Si cela se passe mal, faites un pas en arrière et recommencez.

Si vous suivez ces règles simples, je peux presque garantir que ce que vous écrivez ne se transformera pas en spaghetti - mais qu'en sais-je ? Peut-être que ce que votre tante appelait des spaghettis est en fait du code spaghetti déguisé.

Dernières réflexions sur le code spaghetti

Vous pouvez aussi essayer d'embrasser vos spaghettis, de les aimer comme la seule source de joie dans votre vie ! Si cela ne fonctionne pas pour vous, il y a cet excellent GIF qui simule l'alternative.

Dev meme sur les tâches et les réunions des ingénieurs sprint backlog review

Si tout le reste échoue, vous pouvez simplement améliorer votre capacité de codage. Mais sérieusement, cela devrait être la dernière, dernière, dernière, dernière chose que vous devriez faire !

tl;dv pour les entreprises
tl;dv vous aide (enfin) à tirer profit des réunions au sein de l'organisation. Enregistrez, transcrivez, résumez, générez et automatisez des informations sur les réunions qui vous sont utiles, à vous et à votre organisation. Installation en quelques minutes.
Enregistrements et transcriptions illimités
Résumés sur l'IA
Demandez à tl;dv AI
Fonctionne en plus de 30 langues
Rapports AI sur les réunions multiples
+5000 intégrations

tl;dv Blog

S'abonner à nos blogs

Abonnez-vous et restez au courant des derniers conseils et nouvelles sur les réunions, les ventes, Customer Success, la productivité et la culture du travail.