【发布时间】:2016-11-28 09:59:00
【问题描述】:
我有一个带有少量条件语句的方法。我添加了 if 条件,这样我就可以避免我的 NPE 崩溃。有什么方法可以简化我添加了非空检查的 if 条件?
private void addComplementaryProductToBasket(String productId, String comboName) {
Product product = ProductComboUtils.getProductById(productId);
if (null == product) {
LOG.info("Product does not exist in ProductComboUtils, fetching from DB");
product = getProduct(productId);
}
if (product != null){
product.setPrice(BigDecimal.ZERO);
product.setCurrencyCode(currentBasket.getCurrencyCode());
// Ensure to add comboName with purchase, this
currentBasket.addToPurchase(product, comboName);
int numberOfComplementaryProducts =
currentBasket.getPurchaseLineItemForProduct(product.getProductId()).getNumberOfComplementaryProducts();
currentBasket.getPurchaseLineItemForProduct(product.getProductId()).setNumberOfComplementaryProducts(
++numberOfComplementaryProducts);
}else
{
CrashUtil.logNonFatalException("Product instance is null for productId: " + productId);
}
}
【问题讨论】:
-
你检查了两次相反的东西
product == null和product != null。 else 和第一个 if 条件相同(product == null) -
@AxelH no ...他再次获得产品
-
不完全是@AxelH,有一个电话
product = getProduct(productId);,所以它有另一个机会为空或不为空。 -
是否每次都检查产品是否为空?
-
ProductComboUtils.getProductById(productId);和 getProduct(productId);一样吗??
标签: android if-statement simplify