将if语句与声纳中的一个括起来

问题描述 投票:-2回答:3

为什么声纳显示下面的代码有重大问题,并说一句,如果用一个括号括起来,则使此语句失效

如果我这样做,将会出现功能性问题。我该如何解决此问题

代码

    if (Optional.ofNullable(baseOffersRequest.getCreditClass()).isPresent()) {
            if (!baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("High")
                    && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Low")
                    && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Medium")
                    && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Unknown")) {
                errors.add(new Error("EPO_CATALOG_ERR_04", "Invalid Credit Class in the Request."));
            }
        }
java sonarlint
3个回答
0
投票

Sonar建议在这里做这样的事情:

if (Optional.ofNullable(baseOffersRequest.getCreditClass()).isPresent()) && (!baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("High")
                && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Low")
                && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Medium")
                && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Unknown")) {
            errors.add(new Error("EPO_CATALOG_ERR_04", "Invalid Credit Class in the Request."));

}

这里没有功能性问题,因为没有多余的if语句也可以实现同样的功能。


0
投票

如果在isPresent()循环中为if编写else案例,则不会抛出这样的错误。由于isPresent()循环中只有一种情况,建议您在一个if循环中添加单个条件检查。]

我认为建议您根据编写的代码以这种方式编写:

 if (Optional.ofNullable(baseOffersRequest.getCreditClass()).isPresent()
            && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("High")
                    && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Low")
                    && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Medium")
                    && !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Unknown")) {
                errors.add(new Error("EPO_CATALOG_ERR_04", "Invalid Credit Class in the Request."));
            }

0
投票

引入一个变量,并在一个if语句中检查它:

© www.soinside.com 2019 - 2024. All rights reserved.