Мне нужно исправить проблему с гидролокатором, связанную с большой цикломатической сложностью, но я до сих пор не знаю, как это сделать.
Код состоит из большого количества операторов «если», которые проверяют параметрыкоторый пришел в метод и решает, какое значение перечисления создать
Вот фрагмент кода, например:
public ProductType createProductType(String val1, String val2, String val3) {
if (PRODUCT_MODEL.equals(val1) && PRODUCT_TYPE.equals(val2) {
return ProductType.SOAP;
}
if (PRODUCT_MODEL.equals(val1) || val3.equals(SWAP)) {
return ProductType.STRING;
}
}
И так далее. Как вы можете видеть, я не могу написать этоиспользование регистра переключателя, поскольку проверяется более 1 переменной.Также я не могу создать статическую карту с ключами типа Предикат, потому что сравнение критериев пришло к методу динамически.Поэтому я не могу понять, как исключить эти операторы «если».
Есть предложения?
РЕДАКТИРОВАТЬ
, если разделить его на методы для каждоготип продукта, как тогда я буду проверять, когда создается тип продукта?Я имею в виду, что у меня есть
ProductType productType = null;
productType = tryParseSoap;
if (Objects.nonNull(productType)) {
return productType;
}
productType = tryParseString;
if (Objects.nonNull(productType)) {
return productType
}
, если я делаю это, у меня все еще есть много дел для нулевой проверки, потому что без них я предлагаю продукт, созданный при первой проверке, а затем я все равно проверю его много раз иэто большое снижение производительности