Hygiène de code – qu’est-ce qui cloche avec ce code?

Cette semaine, ce billet sera un peu spécial. Il s’agit d’un petit exercice de ce que j’appelle d’hygiène de code.

Qu’est-ce que l’hygiène de code? Paraphrasons le Larousse.

Ensemble des principes, des pratiques individuelles ou collectives visant à la conservation de la santé, au fonctionnement normal de l’organisme

Remplacez le mot organisme par application et vous avez la définition même de l’hygiène de code.

Dans la vie tout comme dans le code, nous avons tous une façon différente de concevoir l’hygiène. Certains ne se brossent pas les dents. D’autres vont prendre un bain le soir. Certains vont ne pas se laver les mains après avoir été à la salle de bains. Certaines pratiques sont plus répandues que d’autres. Sans compter les normes sociales qui imposent certaines pratiques de l’hygiène.

Comme j’ai mentionné précédemment, la même analogie s’applique à la pratique du développement logiciel, le code. La façon que vous codez vos trucs est un reflet direct de votre hygiène de code. À mon avis, la meilleure image que nous avons dans le domaine à ce sujet est la notion de code smell. C’est simple. Si ça pue, c’est que c’est sale. Si c’est sale, c’est que ce n’est pas propre. Si ce n’est pas propre, c’est que c’est lié à une mauvaise hygiène.

Les grosses méthodes sans structures, les if sans accolades, les noms de variables sans significations font partie des pratiques faisant en sorte que votre hygiène de code soit considérée comme douteuse.

C’est ainsi que je présente un sapristi de bon exemple de ce que je considère un bon cas de code qui sent mauvais. C’est un ami qui m’a présenté le bout de code.


foreach (var r in registrations)
{
if ((count++) % 10 == 0);
Console.Write("\r{0} %", Math.Round((double)count / registrations.Count * 100d));
}

view raw

Horror.cs

hosted with ❤ by GitHub

Combien d’irritants comptez-vous? Sur deux lignes de code, j’en dénombre quatre. Ce n’est pas pire n’est-ce pas? Voici ma liste.

  • La variable count est incrémentée dans le if
  • Il y a un point virgule à la fin de la ligne 3 (celle de la déclaration du if)
  • Il n’y a pas d’accolades sur le if
  • L’utilisation de « \r » pour faire un saut de ligne dans la console. Environnement.NewLine devrait être à préconiser.
  • Je comprends que le résultat de la division doit être (double) mais la spécification dupliquée du type (double) et 100d me laisse dubitatif.

Ceci étant dit, ce code en question peut être facilement refactoré pour le faire sentir bon comme un nouveau-né. Ce n’est pas ça le problème. Le vrai pépin avec ce genre de code est la maintenabilité à long terme, comme toujours. Il s’agit d’un petit exemple. Imaginez maintenant une classe, un module ou même une application entière programmée de cette façon.

Juste à l’odeur, on se croirait dans un dépotoir tellement c’est infect.

Publicité

Auteur : Pascal Paradis

Je suis les mains et le cerveau derrière http://frenchcoding.com. Je développe des microservices chez @UbisoftMTL. Amateur de Hockey et j'aime la technologie, en général.

4 réflexions sur “Hygiène de code – qu’est-ce qui cloche avec ce code?”

  1. Totalement d’accord avec toi. :)
    Je rajouterai aussi que dans un gros projet, avec plusieurs développeurs et que chacun d’eux a sa propre façon de coder (bonne et mauvaise mélangées), cela devient vite le foutoir…
    Personnellement j’aime l’homogénéité. Du coup, ne serait-il pas intéressant pour une équipe de projet d’avoir des conventions de code ? Mais cela soulèverait le faire qu’on perd aussi en « personnalité » pour rester dans l’analogie. :) Et donc cela ferait monter en compétence d’hygiène des profils plutôt junior,s mais pourrait aussi faire perdre une certaine qualité de code et capacité d’évolution pour des profils plutôt séniors. Tu en penses quoi ?

    1. À mon avis, pour tout projet un peu sérieux, une convention de code s’impose. Ça n’a pas besoin d’être super rigide. Juste un certain nombre de règles à respecter pour que tout le monde aille dans le même sens.

      La meilleure façon de l’imposer est de passer par de l’automatisation pour la validation. Au moment de la revue de code, si les développeurs n’ont qu’à valider des algorithmes et la solution globale, les choses vont aller plus rondement.

      1. Vu comme ça, en effet c’es quelque chose qui serait vraiment idéal dans la plupart des projets.
        A quand un post sur des précos de ta part? ;)

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

%d blogueueurs aiment cette page :