In Java, devo impostare una classe POJO con valori. Tuttavia, per decidere quale funzione setter utilizzare, devo fare affidamento sulla condizione if
. Il mio codice attuale è il seguente:Eliminazione di 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);
}
Questo è solo un esempio, ma ho 70+ tali proprietà da impostare. Il mio codice funziona, ma mi chiedo se sia il modo giusto di fare le cose?
AFAIK, tale codice è contrario alle migliori pratiche di codifica. Come possiamo ottimizzare questo codice in Java? Qual è la migliore pratica di Java per gestire tale codice?
È possibile utilizzare la "casella degli interruttori"! –
Se ho capito bene, il tuo codice sta essenzialmente de-serializzando i dati XML in un POJO manualmente, riga per riga, con una condizione per ogni nodo/proprietà. C'è molto più sbagliato in questo rispetto all'enorme if/else. Direi che è meglio trovare una struttura di serializzazione di alto livello come Jackson, e riscriverne la maggior parte. – Mena
Se sta risolvendo il mio problema. Switch avrà lo stesso problema come se. Il codice sarà ancora brutto. –