J'utilise SonarLint pour Eclipse depuis récemment, et cela m'a beaucoup aidé. Cependant, cela m'a posé une question sur la complexité cyclomatique.
SonarLint considère comme acceptable un CC de 10, et il y a des cas où je suis au-delà, environ 5 ou 6 unités. Ces parties sont liées aux mappeurs où les valeurs dépendent de différentes variables, par exemple:
- Le champ A repose sur String sA;
- Le champ B repose sur String sB;
- Le champ C repose sur String sC;
- etc ...
Je n'ai pas d'autre choix que de mettre un if
pour chaque domaine. Ce n'est pas mon choix (heureusement) mais un système déjà existant et complexe que je ne peux pas changer par moi-même.
Le cœur de ma question est: pourquoi est-il si important de ne pas avoir un CC trop élevé dans une seule méthode ? Si vous déplacez certaines de vos conditions dans une ou plusieurs sous-méthodes pour réduire la complexité, cela ne réduit pas le coût de votre fonction globale, cela déplace simplement le problème ailleurs, je suppose?
(Désolé pour les petites erreurs, le cas échéant).
ÉDITER
Ma question ne se réfère pas à la complexité cyclomatique globale, mais seulement à la complexité d'une méthode unique et au fractionnement de la méthode (j'ai du mal à expliquer ce que je veux dire exactement, désolé). Je demande pourquoi est-il permis de diviser vos conditions en méthodes plus petites si elle appartient toujours à une `` super méthode '', qui exécutera simplement chaque sous-méthode, ajoutant ainsi de la complexité à l'algorithme.
Le deuxième lien cependant ( sur l'anti-modèle ) est d'une grande aide.