――Wenn ich bei der Arbeit programmierte, wies mein Vorgesetzter auf die Komplexität hin. ――Ich kannte das Wort zyklische Komplexität nicht, aber ich wusste, dass ein Fehler irgendwie versteckt sein könnte. ――Weil es eine große Sache ist, habe ich die zyklische Komplexität untersucht. ――Für Leute, die so unerfahren sind wie ich
Zyklomatische Komplexität ist eine Art Softwaremessmethode. Es wurde von Thomas McCabe entwickelt und dient zur Messung der Komplexität eines Programms. Zählen Sie die Anzahl der linear unabhängigen Routen direkt aus dem Programmquellcode. [wikipedia](https://ja.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E7%9A%84%E8%A4%87%E9%9B%91%E5%BA % A6)
--Berechnen Sie, wie viele Zweige wie if / else für Anweisung und switch-Anweisung im Code enthalten sind ――Die Größe der Zahl gibt an, wie einfach es ist, Fehler zu mischen.
Es scheint verschiedene Theorien zu geben, aber ...
Zirkuläre Komplexität | Status |
---|---|
1-10 | Einfach mit sicherem Code zu testen |
11-20 | Ein wenig komplizierter Code |
21-40 | Komplexer Code erschwert das Testen |
41 oder mehr | Schlechter Typ. Nicht testbar |
Wenn Sie es normal schreiben, denke ich, ist es schwer, 10 zu überschreiten. (In meinem Fall habe ich einmal 20 an der Geschäftslogik gemessen)
Ich habe unten einen geeigneten Service vorbereitet. Da es sich nur um ein Beispiel handelt, hat der Prozess selbst keine Bedeutung. Ignorieren Sie ihn daher bitte.
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;
}
Im obigen Beispiel gibt es eine for-Anweisung und neun if / else-Zweige, sodass 1 + 1 + 9 eine Komplexität von 11 ergibt.
Ich denke, es gibt verschiedene Möglichkeiten, die zyklische Komplexität zu reduzieren.
Ich denke, es gibt viele Möglichkeiten, dies zu tun. Daher denke ich, dass es wichtiger ist, sich der zyklischen Komplexität bewusst zu sein, wenn regelmäßig codiert wird. Ich persönlich konnte dank meiner Forschung zur zyklischen Komplexität visuell rechnen, aber ich glaube nicht, dass dies jeder ist. Deshalb möchte ich die Funktionen von IntelliJ IDEA für diese Personen vorstellen. Stellen.
--IntelliJ >> Präferenz auswählen
--Suche nach "zu komplex"
--Set für jede Klasse / Methode
Wenn Sie den eingestellten Wert überschreiten, werden Sie so wütend.
[Circular Complexity-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