ich die folgende Methode haben:Reduzierung der zyklomatische Komplexität einer Java-Methode
private void setClientAdditionalInfo(Map map, Client client, User user) {
Map additionalInfo = (Map) map.get("additionalInfo");
if (checkMapProperty(additionalInfo, "gender")) {
client.setGender(additionalInfo.get("gender").toString());
}
if (checkMapProperty(additionalInfo, "race")) {
client.setRace(additionalInfo.get("race").toString());
}
if (checkMapProperty(additionalInfo, "ethnicity")) {
client.setEthnicity(additionalInfo.get("ethnicity").toString());
}
.....
12 mehr, wenn Aussagen in ähnlicher Weise verwendet werden. Der einzige Unterschied ist ein anderer Setter-Methodenname und ein anderer Parameter. Nun, da das gleiche Muster immer wieder wiederholt wird, gibt es eine Möglichkeit, die Komplexität des Codes zu reduzieren?
Sie könnten eine Map '{" race ": Client :: setRace, ...} erstellen oder Reflection verwenden, um den passenden Setter für eine Liste von Strings zu finden. Nicht sicher, ob dadurch die Komplexität verringert wird, aber es könnte Doppelarbeit vermeiden. Ich denke, ich würde es einfach so behalten.Besser zu denken "warum wird das 15 mal wiederholt?" als zu denken: "Was zum Teufel macht dieser Code?" –
Eine Frage, die sich zu fragen lohnt: Warum sind Ihre Informationen in einer Karte? Könnten Sie Ihre Informationen nicht früher im 'Client' gespeichert haben? Oft ist die Antwort "Nein" und Sie müssen die Kugel beißen, aber manchmal können Sie vermeiden, Objekte aus Karten zusammen zu füllen. – biziclop
Meinst du "zyklomatische Komplexität" oder "weniger Codezeilen?" Eine for-Schleife über N Dinge kann der zyklomatischen Komplexität 2^N hinzufügen, auch wenn es besser aussehen könnte. Sie erhalten viele Antworten darauf, wie Sie den Code verbessern können, ohne die zyklomatische Komplexität zu verändern. – djechlin