Au travail, nous étudions des problèmes courants qui conduisent à une complexité cyclomatique élevée. Par exemple, avoir une grande instruction if-else peut conduire à une complexité cyclomatique élevée, mais peut être résolue en remplaçant les conditionnels par un polymorphisme. Quels autres exemples avez-vous trouvé?Causes communes de la complexité cyclomatique et de leurs solutions
Répondre
Voir le definition of Cyclomatic Complexity de NDepend.
Nesting Depth est également une bonne métrique de code.
La complexité cyclomatique est une métrique de logiciel procédural populaire égale au nombre de décisions pouvant être prises dans une procédure. Concrètement, en C#, le CC d'une méthode est 1 + {le nombre d'expressions suivantes trouvées dans le corps de la méthode}:
si | alors que | pour | foreach | cas | défaut | continuer | goto | & & | || | attraper | opérateur ternaire?: | ??
expressions suivantes ne sont pas comptés pour le calcul CC:
autre | fais | commutateur | essayer | utilisant | jeter | enfin | retour | création d'objet | appel de méthode | accès au champ
Adaptée au monde OO, cette métrique est définie à la fois sur les méthodes et classes/structures (comme la somme de ses méthodes CC). Notez que le CC d'une méthode anonyme n'est pas compté lors du calcul du CC de sa méthode externe. Recommandations: Les méthodes où CC est supérieur à 15 sont difficiles à comprendre et à maintenir. Les méthodes où CC est supérieur à 30 sont extrêmement complexes et doivent être divisées en méthodes plus petites (sauf si elles sont générées automatiquement par un outil).
Sympa de votre part d'ajouter comment c'est calculé. –
Un autre exemple pour éviter d'utiliser autant de ifs, c'est l'implémentation d'une machine à états finis. Parce que les événements déclenchent des transitions, les conditions sont implicites de manière plus claire avec ces transitions qui changent l'état du système. Le contrôle est plus facile.
vous laisser un lien où mentionne quelques-uns des avantages de ESt:
http://www.skorks.com/2011/09/why-developers-never-use-state-machines/
- 1. Déduire la complexité cyclomatique dans .NET
- 2. Calculer la complexité cyclomatique pour Javascript
- 3. Annotations pour appliquer la complexité cyclomatique et les contraintes LCOM
- 4. Complexité cyclomatique d'un code avec plusieurs points de sortie
- 5. Graphique de flux de contrôle et complexité cyclomatique pour la procédure suivante
- 6. Quelle est la complexité temporelle de l'indexation, de l'insertion et de la suppression de structures de données communes?
- 7. Quels sont les bogues et leurs solutions de contournement dans Flash Player?
- 8. 2ème colonne est en dessous de la 1ère colonne, quelles sont les causes communes de cela?
- 9. Quels outils sont utiles pour déterminer la complexité cyclomatique d'un code source C donné
- 10. La complexité de Concat()
- 11. Ajout manuel de causes causes IntegrityError
- 12. Calcul de la complexité temporelle
- 13. Relations entre la théorie de la complexité et l'ingénierie logicielle?
- 14. temps, la complexité de l'espace et la notation O problème
- 15. multiset, carte et carte de hachage complexité
- 16. Les cordes se rejoignent et la complexité?
- 17. Solutions de visioconférence
- 18. Quels sont les problèmes et leurs solutions lorsque vous travaillez hors ligne avec TFS?
- 19. Analyse complexité de l'image
- 20. App Engine et communes fileUpload
- 21. exercice complexité de calcul
- 22. La complexité d'une fonction
- 23. Fonctions graphiques communes et utiles?
- 24. Complexité de Perl?
- 25. Description non-mathématique de la complexité NL
- 26. Complexité de STL max_element
- 27. Constante de complexité asymptotique, pourquoi la constante?
- 28. Complexité de la lecture de la base de données MySQL
- 29. comment écrire une fonction pour trouver la complexité temporelle et la complexité spatiale de n'importe quel algorithme?
- 30. Graphiques de test et solutions pour MAXCUT
Toute construction qui a un comportement de branchement augmente la complexité cyclomatique –
http://en.wikipedia.org/wiki/Cyclomatic_complexity: –
Vous dites "complexité cyclomatique" comme si c'était une chose intrinsèquement mauvaise. Ne feriez-vous pas mieux en regardant ce qui cause des problèmes réels? –