Code smell

Définition, exemples et bonnes pratiques

À retenir

  • Ce n'est pas un bug informatique, mais un défaut de qualité.
  • C'est un symptôme de mauvaises pratiques de programmation.
  • Leur accumulation rend le logiciel de plus en plus difficile et coûteux à modifier.

Un « code smell » (ou odeur de code) est un indice visuel dans le code source qui suggère un problème de conception sous-jacent. Ce n'est pas une erreur qui empêche le programme de fonctionner, mais plutôt un signe que le code est mal structuré, un peu comme une odeur suspecte dans une cuisine qui n'indique pas forcément que le plat est empoisonné, mais suggère que l'hygiène laisse à désirer.

Étymologie

Vient de l'anglais code et smell (odeur). Le terme a été popularisé par les ingénieurs Kent Beck et Martin Fowler à la fin des années 1990. L'analogie repose sur l'idée qu'un développeur expérimenté peut « sentir » qu'un bloc de code est problématique simplement en le parcourant du regard.

Exemples d'usage

  • Le code dupliqué : copier-coller le même morceau de logique à cinq endroits différents du projet.
  • La méthode « Dieu » : une seule fonction qui fait des centaines de lignes et gère trop de responsabilités.
  • L'obsession des types primitifs : utiliser des nombres ou des chaînes de caractères simples pour représenter des concepts complexes comme des devises ou des numéros de téléphone sans structure dédiée.

Cas d'usage

Ce concept est utilisé quotidiennement lors des revues de code entre collègues pour identifier les passages à améliorer. Il intervient également dans la gestion de la dette technique et lors des phases de refactoring, où l'on cherche à rendre le logiciel plus propre et plus facile à maintenir sans changer ses fonctionnalités.

Bonnes pratiques

Il ne faut pas ignorer ces signaux, car ils rendent le code fragile et difficile à faire évoluer. La bonne pratique consiste à utiliser des outils d'analyse automatique (linters) et à appliquer des principes de conception comme le DRY (Don't Repeat Yourself) pour éliminer ces mauvaises odeurs dès qu'elles apparaissent.

Synonymes

odeur de code défaut de conception signe de dette technique

Antonymes

Clean Code code propre conception robuste

Conseil

Si vous débutez, entraînez-vous à repérer les fonctions trop longues ou les noms de variables peu clairs. Si vous avez du mal à expliquer ce que fait une portion de code à un ami, c'est probablement qu'elle contient un code smell.

Questions fréquentes

Faut-il corriger tous les code smells immédiatement ?

Pas forcément. Il faut prioriser ceux qui se trouvent dans les parties du code que l'on modifie souvent, car c'est là qu'ils sont les plus gênants.

Un code smell conduit-il toujours à un bug ?

Pas directement, mais il crée un terrain favorable aux erreurs humaines lors des futures mises à jour.