2017-07-13 2 views
1

Je comprends ce qu'est la complexité cognitive et comment elle sera calculée, mais je ne sais pas maintenant comment déterminer ce qui est une bonne valeur pour cette mesure, donc la complexité de mon code ne doit pas être. J'ai besoin d'un moyen objectif de l'estimer sans comparer les projets les uns par rapport aux autres. Une sorte de formule comme "code de complexité/lignes" ou quelque chose comme ça. Ou si je définis une porte de qualité pour un gros projet, comment puis-je en calculer les valeurs.SonarQube: Qualifier la complexité cognitive

Répondre

2

Au niveau de la méthode, 15 est un maximum recommandé.

Au niveau de la classe, cela dépend de ce que vous attendez dans le package. Par exemple, dans un package qui ne devrait contenir que des classes avec des champs et des getters ou des setters simples, une classe avec une complexité cognitive supérieure à 0 (5? 10?) Mérite probablement un autre coup d'oeil. D'autre part, dans un package qui contient des classes de logique métier, un score de classe> = ... 150 (?) Peut indiquer qu'il est temps d'examiner la division de la classe. En ce qui concerne ce que la limite devrait être pour un projet, cela reste sans réponse, et nous ramène à la complexité essentielle et accidentelle de Fred Brooks. Fondamentalement, il y a une certaine quantité de logique qui est nécessaire pour faire le travail. La complexité au-delà est accidentelle et pourrait théoriquement être éliminée. Comprendre la différence entre les deux est le nœud du problème, et en cherchant la complexité accidentelle, je me concentrerais sur des méthodes où la complexité dépasse le seuil par défaut de 15.

Pour répondre à votre question initiale, «Que devrait limite pour une application être? ", je dirais qu'il ne devrait pas y en avoir un. Parce que la complexité essentielle pour une application calculatrice simple est loin, beaucoup plus faible que pour un programme sur la navette spatiale. Et si vous essayez de faire entrer le programme Space Shuttle dans le seuil de la calculatrice, vous allez absolument casser quelque chose.

(Divulgation: Je suis l'auteur principal de Cognitive Complexity)

+0

Merci d'aider, il est très impressionnant pour obtenir des informations de l'Inventeur d'origine. J'apprécie beaucoup cela. Je pense maintenant que je suis capable de travailler avec. – ZerQuetschMe