W Javie, muszę ustawić klasę POJO z wartościami. Jednak aby zdecydować, która funkcja ustawiająca będzie używana, muszę polegać na stanie if
. Mój obecny kod wygląda następująco:Pozbywanie się 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);
}
To tylko przykład, ale mam już 70 takich właściwości do ustawienia. Mój kod działa, ale zastanawiam się, czy jest to właściwy sposób robienia rzeczy?
AFAIK, taki kod jest niezgodny z najlepszymi praktykami kodowania. Jak możemy zoptymalizować ten kod w Javie? Co to jest najlepsza praktyka Java, aby poradzić sobie z takim kodem?
Możesz użyć 'przełączania obudowy'! –
Jeśli dobrze rozumiem, twój kod jest w istocie serializowaniem danych XML w POJO ręcznie, linia po linii, z warunkiem dla każdego węzła/usługi. Jest o wiele więcej z tym nie tak, niż tylko ogromny, czy inny. Powiedziałbym, że lepiej jest znaleźć ramy do serializacji wysokiego poziomu, takie jak Jackson, i przerobić wiele z tego. – Mena
Jeśli rozwiązuje mój problem. Switch będzie miał taki sam problem, jak w przypadku. Kod nadal będzie wyglądał brzydko. –