In Java muss ich eine POJO-Klasse mit Werten festlegen. Um jedoch zu entscheiden, welche Setter-Funktion verwendet werden soll, muss ich mich auf if
Bedingung verlassen. Mein aktueller Code sieht wie folgt aus:loswerden von if/else
// Code written in a function which is called within a loop, while parsing xml file.
if (name.equals("dim1")) {
line.setDim1Code(Integer.parseInt(value));
} else if (name.equals("dim2")) {
line.setDim2Code(Integer.parseInt(value));
} else if (name.equals("debitcredit")) {
line.setDebitOrCredit(value);
} else if (name.equals("basevalue")) {
line.setBasevalue(Integer.parseInt(value));
} else if (name.equals("rate")) {
line.setRate(Integer.parseInt(value));
} else if (name.equals("value")) {
line.setValue(Integer.parseInt(value));
} else if (name.equals("description")) {
line.setDescription(value);
} else if (name.equals("vatbasetotal")) {
line.setVatBaseTotal(value);
} else if (name.equals("vattotal")) {
line.setVatTotal(value);
}
Dies ist nur ein Beispiel, aber ich habe 70+ solche Eigenschaften eingestellt werden. Mein Code funktioniert, aber ich frage mich, ob es richtig ist, Dinge zu tun?
AFAIK, ist ein solcher Code gegen die Best Practices der Codierung. Wie können wir diesen Code in Java optimieren? Was ist Java-Best Practice, um mit einem solchen Code umzugehen?
Sie können den 'switch case' verwenden! –
Wenn ich richtig verstehe, dein Code ist im Wesentlichen De-Serialisierung von XML-Daten in ein POJO manuell Zeile für Zeile mit einer Bedingung für jeden Knoten/Eigenschaft. Damit ist viel mehr falsch als nur das große if/else. Ich würde sagen, Sie sind besser dran, ein High-Level-Framework für die Serialisierung wie Jackson zu finden und das Ganze neu zu schreiben. – Mena
Wenn das mein Problem löst. Switch wird das gleiche Problem haben wie wenn. Code wird immer noch hässlich aussehen. –