В Java я должен установить класс POJO со значениями. Однако, чтобы решить, какую функцию сеттера использовать, я должен зависеть от состояния if
. Мой текущий код выглядит следующим образом:Избавление от 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);
}
Это всего лишь пример, но у меня есть 70 таких свойств. Мой код работает, но мне интересно, правильно ли он это делает?
AFAIK, такой код противоречит наилучшим методам кодирования. Как мы можем оптимизировать этот код в Java? Что такое наилучшая практика Java для работы с таким кодом?
Вы можете использовать 'switch case'! –
Если я правильно понимаю, ваш код по существу де-сериализует XML-данные в POJO вручную, строка за строкой, с условием для каждого узла/свойства. В этом есть намного больше ошибок, чем просто огромное if/else. Я бы сказал, что вам лучше найти некоторые высокоуровневые схемы сериализации, такие как Jackson, и переписать их. – Mena
Если это решение моей проблемы. У коммутатора будет такая же проблема, как если бы. Код по-прежнему выглядит уродливым. –