Java-code PMD Beschwert sich über die Zyklomatische Komplexität , von 20
Wenn ich ran PMD auf mein Java-Code , der die Fehlermeldung zeigt, ist
"Die Klasse STWeb hat eine Zyklomatische Komplexität von 20" .
In der Regel meine java-Klasse ist dieser Weg
public class STWeb implements STWebService {
public String getData(RequestData request)
{
validate(request);
}
public boolean validate(Data[] formdata)
{
if(formdata.length==1)
//do this
else if(formdata.length==3)
//do this
else if(formdata.length==4)
//do this
else if(formdata.length>4)
//do this
else if(formdata.length==2)
{
if(formdata[0].getName.equals("OIY"))
{
}
/ And many more if else here
}
}
}
Wie Sie sehen können , wie pro meine business-Anforderungen , die ich brauche, um code der Klasse
mit vielen wenn ' s und falls es sonst noch so der Grund, warum die cyclocomplexity hat ncreased , bitte sagen Sie mir
was ist machbar-Ansatz pro den standard für diese ??
Versuchen Einrücken von code, damit wir sehen können, was Los ist
InformationsquelleAutor Pawan | 2011-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zyklomatische Komplexität Messungen sollten nicht verwendet werden, für die Qualitätskontrolle, sondern als eine Anzeige/Warnung für schlechten code. Sie sollten den Fokus mehr auf das dahinter vielmehr als der Wert der CC selbst.
Zwar können Sie reduzieren die Komplexität der
validate
Methode durch die Aufteilung in kleinere Methoden durch die Umgestaltung, die Klasse als ganzes immer noch die gleiche CC.Solange der code ist lesbar und sinnvoll, um die nächste person, die hat, um es zu betrachten, wobei dann eine höhere CC sollte nicht so eine große Rolle.
InformationsquelleAutor Deco
Hilft es, wenn Sie so etwas wie dieses:
dann ersetzen Sie es mit diesem:
InformationsquelleAutor user1154664
Wollte nur hinzufügen, dass es manchmal möglich, Sie zu lösen solche Probleme mit Objekt - oder Struktur-Gebäude. Könnten Sie erklären, ein "Wrapper-Klasse" für Ihre Daten werden soll, zurückgegeben. Aber es gibt immer wieder Fälle, wo Sie nicht anwenden können diese ohne Aufblähung der code mit Tonnen von Objekten, die im Gegenzug auch die Ergebnisse in unleserlicher code ^^"
BEARBEITEN: diese SO-post ist ein [schönes Beispiel mit ENUMS]
InformationsquelleAutor Unknown Id
Zyklomatische Komplexität scheint darauf hinzudeuten, dass die Menge an code-Pfade, die es gibt. Also, wenn Sie Ihre Anforderungen sagen, Sie müssen verwenden viele ifs und wenn elses, dann können Sie Sie ignorieren diese Nachricht.
InformationsquelleAutor Dan
Wenn dies erforderlich ist - ja, das passiert, obwohl es futil - oft können Sie reduzieren die Klasse zyklomatische Komplexität durch die Einführung von Basis-Klassen und-bewegen, verteilen sich die Funktionen in der Basis-Klassen, bis die pro-Klasse die zyklomatische Komplexität ist ok.
Oder einfacher: add //NOPMD zu Ihrer Klasse:
InformationsquelleAutor bebbo