Autres conseils

complexité cyclomatique mesure le nombre de fois que vous devez exécuter un bloc de code avec des paramètres variables afin d'exécuter chaque chemin à travers ce bloc. Un nombre plus élevé est mauvais car il augmente les chances d'erreurs logiques échappant à votre stratégie de test.

Cyclocmatic complexity = Number of decision points + 1

Les points de décision peuvent être vos déclarations conditionnelles comme si, si ... sinon, interrupteur, boucle, boucle while etc.

Le tableau suivant décrit le type de l'application.

  • complexité cyclomatique est 1 - 10  Pour être considéré comme normal applicatinon

  • cyclomatique de complexité se trouve à 11 - 20  demande modérée

  • cyclomatique de complexité se trouve à 21-50  demande risquée

  • cyclomatique de complexité se trouve à plus de 50  demande Unstable

Wikipédia peut être votre ami sur celui-ci: Définition de la complexité cyclomatique

En gros, il faut imaginer votre programme en tant que puis

  

La complexité est (...) définie comme suit:

M = E − N + 2P
     

     
      
  • M = complexité cyclomatique,
  •   
  • E = le nombre d'arêtes du graphe
  •   
  • N = le nombre de noeuds du graphe
  •   
  • P = le nombre de composants connectés
  •   

CC est un concept qui tente de saisir la complexité de votre programme et comment il est difficile de le tester dans un seul numéro entier.

Ouais, c'est vraiment. Les chemins d'exécution plus votre code peut prendre, plus les choses qui doivent être testés, et la plus grande probabilité d'erreur.

Un autre point intéressant que je l'ai entendu:

Les endroits dans votre code avec les plus grands tirets devraient avoir la plus haute CC. Ce sont généralement des zones les plus importantes pour assurer une couverture de test, car il est prévu qu'ils seront plus difficiles à lire / maintenir. Comme d'autres réponses noter, ce sont aussi les régions les plus difficiles de code pour assurer une couverture.

complexité cyclomatique est vraiment juste un mot à la mode effrayant. En fait, il est une mesure de la complexité du code utilisé dans le développement de logiciel pour signaler plusieurs parties de code complexes (plus susceptibles d'être buggé, et doit donc être très soigneusement et minutieusement testés). Vous pouvez le calculer en utilisant la formule E-N + 2P, mais je suggère que vous avez cette calculé automatiquement par un plug-in. Je l'ai entendu parler d'une règle de base que vous devez vous efforcer de garder le CC inférieur à 5 pour maintenir une bonne lisibilité et la maintenabilité de votre code.

Je viens récemment expérimenté Eclipse Metrics Plugin sur mes projets Java, et il a un fichier d'aide vraiment sympa et concis qui bien sûr intégrer à votre aide régulière d'Eclipse et vous pouvez lire d'autres définitions de diverses mesures de complexité et des conseils et astuces sur l'amélioration de votre code.

Voilà, l'idée est qu'une méthode qui a une faible CC a moins de fourches, en boucle, etc., qui font tous une méthode plus complexe. Imaginez revoir 500.000 lignes de code, avec un analyseur et de voir un couple des méthodes qui ont oder de grandeur plus CC. Cela vous permet de vous concentrer ensuite refactorisation ces méthodes pour une meilleure compréhension (Il est également fréquent qu'un CC élevé a un taux élevé de bug)

Chaque point de décision dans une routine (boucle, commutateur, si, etc ...) se résume essentiellement à un équivalent si la déclaration. Pour chaque if vous avez 2 codepaths qui peuvent être prises. Donc, avec la 1ère branche il y a 2 chemins de code, avec le second il y a 4 chemins possibles, avec le 3e il y a 8 et ainsi de suite. Il y a au moins 2 ** N chemins de code où N est le nombre de branches.

Il est donc difficile de comprendre le comportement du code et de le tester quand N croît au-delà un certain petit nombre.

Les réponses fournies jusqu'à présent ne mentionnent pas la corrélation de la qualité des logiciels à la complexité cyclomatique. La recherche a montré que la présence d'une mesure de complexité cyclomatique inférieure devrait aider à développer un logiciel qui est de meilleure qualité. Il peut aider avec des attributs de qualité des logiciels de lisibilité, maintenabilité et portabilité. En général on devrait tenter d'obtenir une mesure de complexité cyclomatique entre 5-10.

L'une des raisons d'utiliser des paramètres comme la complexité cyclomatique est qu'en général, un être humain ne peut garder une trace d'environ 7 (plus ou moins 2) éléments d'information simultanément dans votre cerveau. Par conséquent, si votre logiciel est trop complexe avec de multiples chemins de décision, il est peu probable que vous serez en mesure de visualiser comment votre logiciel se comportera (à-dire qu'il aura une mesure de grande complexité cyclomatique). Cela entraînera probablement plus de développer le logiciel monté erroné ou bug. Plus d'informations sur ce qui peut être trouvé rel="nofollow"> et sur Wikipedia .

complexité cyclomatique est calculée en utilisant le graphe de flux de commande. Le nombre de mesure quantitative des chemins linéairement indépendants à travers le code source d'un programme est appelé complexité cyclomatique (si / si d'autre / pour / en)

complexité Cyclomatric est essentiellement une mesure de comprendre les zones de code qui a besoin de plus attension pour la maintenabilité. Il serait essentiellement une entrée à la refactorisation. Il donne certainement une indication de la zone d'amélioration du code en termes d'éviter la boucle imbriquée profonde, conditions etc.

C'est un peu il. Cependant, chaque branche d'une déclaration « cas » ou « switch » tend à compter comme 1. En effet, cela signifie que CC déteste déclarations de cas, et tout code qui les oblige (processeurs de commande, des machines d'état, etc).

Considérez les de votre fonction, avec un bord supplémentaire en cours d'exécution de la sortie à l'entrée. La complexité cyclomatique est le nombre maximum de coupes que nous pouvons faire sans séparer le graphique en deux morceaux.

Par exemple:

function F:
    if condition1:
       ...
    else:
       ...
    if condition2:
       ...
    else:
       ...

Flow Control Graph

Flow Control graphique

Vous pouvez probablement voir intuitivement pourquoi le graphique lié a une complexité cyclomatique de 3.

complexité Cyclomatric est une mesure de la complexité d'une unité de logiciel is.It mesure le nombre de chemins différents un programme pourrait suivre avec des constructions logiques conditionnelles (Si, alors que, pour, commutateur et cas etc ....). Si vous souhaitez en savoir plus sur le calcul est ici une merveilleuse vidéo de YouTube, vous pouvez regarder https : //www.youtube.com/watch? v = PlCGomvu-NM

Il est important dans la conception des cas de test car elle révèle les différents chemins ou des scénarios un programme peut prendre. « Pour avoir une bonne testabilité et la maintenabilité, McCabe recommande qu'aucun module de programme devrait dépasser une complexité cyclomatique de 10" (Marsic, 2012, p. 232).

Référence: Marsic., I. (2012, Septembre). Software Engineering . Rutgers University. Récupérée de www.ece.rutgers.edu/~marsic/books/SE/book-SE_marsic.pdf

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top