À retenir
- C'est le "thermomètre" de la complexité d'un programme.
- Plus le score est haut, plus le risque de bugs est important.
- Il aide à décider quand simplifier ou diviser une partie du logiciel.
Le nombre cyclomatique est un indicateur numérique qui mesure la complexité logique d'un morceau de code informatique. Imaginez un labyrinthe : plus il y a d'intersections et de chemins possibles (comme des choix si... alors...), plus le score est élevé, signalant un code difficile à tester et à maintenir.
Étymologie
Le mot vient du grec kuklos (cercle, cycle), car il s'appuie sur la théorie des graphes pour compter les cycles et les chemins dans le code. Ce concept a été théorisé par l'informaticien Thomas J. McCabe en 1976.
Exemples d'usage
- Une fonction simple qui affiche un texte sans aucune condition aura un score de 1.
- Une fonction contenant trois structures
ifsuccessives aura un score de 4 (le chemin de base + les trois bifurcations).
Cas d'usage
On utilise cette mesure lors des audits de qualité de code pour identifier les fonctions trop "touffues". Elle sert également à estimer l'effort nécessaire pour les tests unitaires : le nombre cyclomatique indique souvent le nombre minimum de tests à réaliser pour parcourir tout le code.
Bonnes pratiques
La règle d'or est de ne pas dépasser un score de 10 pour une seule fonction. Si ce chiffre grimpe trop haut, il est fortement conseillé de découper le code en plusieurs petites fonctions plus simples (refactorisation).
Synonymes
Conseil
Si vous utilisez un éditeur de code moderne (comme VS Code), cherchez des extensions de "Code Metrics". Elles affichent ce score en temps réel au-dessus de vos fonctions, vous alertant visuellement dès que votre code devient trop complexe.
Questions fréquentes
Un score élevé signifie-t-il que le code est faux ?
Non, mais cela signifie qu'il est complexe, ce qui augmente mathématiquement les chances d'oublier un cas particulier lors des tests.
Comment calculer ce score rapidement ?
Une méthode simple consiste à compter le nombre de mots-clés de décision (if, while, for, switch) et d'ajouter 1 au total.