«Quand je codais au travail, mon supérieur a souligné la complexité. «Je ne connaissais pas le mot complexité cyclique, mais je savais qu'un bug pouvait être caché d'une manière ou d'une autre. «Parce que c'est un gros problème, j'ai étudié la complexité cyclique. ――Pour les personnes aussi inexpérimentées que moi
La complexité cyclomatique est un type de méthode de mesure logicielle. Développé par Thomas McCabe, il est utilisé pour mesurer la complexité d'un programme. Comptez le nombre de routes linéairement indépendantes directement à partir du code source du programme. [wikipedia](https://ja.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E7%9A%84%E8%A4%87%E9%9B%91%E5%BA % A6)
--Calculer le nombre de branches telles que if / else, for statement, switch statement sont incluses dans le code ―― L'ampleur du nombre vous indique à quel point il est facile de mélanger les bogues.
Il semble y avoir diverses théories, mais ...
Complexité circulaire | Statut |
---|---|
1-10 | Facile à tester avec un code sécurisé |
11-20 | Un code un peu compliqué |
21-40 | Un code complexe rend les tests difficiles |
41 ou plus | Mauvais garçon. Non testable |
Si vous l'écrivez normalement, je pense qu'il est difficile de dépasser 10. (Dans mon cas, j'ai déjà mesuré 20 à la logique métier)
J'ai préparé un service approprié ci-dessous. Puisqu'il ne s'agit que d'un exemple, le processus lui-même n'a aucune signification, alors ignorez-le.
Service.java
private String familyService(List<String> nameList) {
String id;
for (String name : nameList) {
if (name.startsWith("a")){
id = "a";
} else if (name.startsWith("b")){
id = "b";
} else if (name.startsWith("c")){
id = "c";
} else if (name.startsWith("d")){
id = "d";
} else if (name.startsWith("e")){
id = "e";
} else if (name.startsWith("f")){
id = "f";
} else if (name.startsWith("g")){
id = "g";
} else if (name.startsWith("h")){
id = "h";
} else {
id = "xxxx";
}
}
return id;
}
Dans l'exemple ci-dessus, il y en a une pour instruction et neuf branches if / else, donc 1 + 1 + 9 donne une complexité de 11.
Je pense qu'il existe plusieurs façons de réduire la complexité cyclique.
Je pense qu'il y a plusieurs façons de le faire, donc je pense qu'il est plus important d'être conscient de la complexité cyclique lors du codage sur une base régulière. J'ai personnellement pu calculer visuellement grâce à mes recherches sur la complexité cyclique, mais je ne pense pas que tout le monde le soit, alors je voudrais présenter les fonctionnalités d'IntelliJ IDEA pour ces personnes. Mettre.
--IntelliJ >> Sélectionnez une préférence
--Recherche par "trop complexe"
[Complexité circulaire-Wikipedia](https://ja.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E7%9A%84%E8%A4%87%E9%9B% 91% E5% BA% A6) Learn Mccabe's Cyclomatic Complexity with Example
Recommended Posts