简化条件语句android

时间:2016-11-28 09:59:00

标签: android if-statement simplify

我有一个条件语句很少的方法。我添加了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);
        }
    }

3 个答案:

答案 0 :(得分:0)

如果您希望首先维护检查ProductComboUtils然后从数据库中提取的逻辑,则无法简化此示例中的if条件。

答案 1 :(得分:0)

由于你从两个来源获得了价值,我只想用支票(Utlis或DB)创建一个方法。

public Product getProductTest(String productId){
    Product product = ProductComboUtils.getProductById(productId);
    if (null == product) {
        LOG.info("Product does not exist in ProductComboUtils, fetching from DB");
        product = getProduct(productId);
    }
    return product;
}

然后你只需要获取值并检查值。如果这是null,那么就会出现问题并显示错误。

private void addComplementaryProductToBasket(String productId, String comboName) {
        Product product = getProductTest(productId);
        if (product != null){
            ....
        } else ...
}

答案 2 :(得分:0)

您可以为产品信息/详细信息提供单独的列。

在表格中添加额外的列 isUpdated ,并将 0 保留为默认值。

当您达到足够的要求时,将列值更新为 1

public void isProdUpdated(int id) {
        SQLiteDatabase db = this.getWritableDatabase();
        try {
        Cursor cursor = db.rawQuery(selectQuery, null); // selectQuery is your complete query 
        if (cursor.getCount() != 0
                && cursor.moveToFirst()) {
            int status = cursor.getInt(cursor
                    .getColumnIndex(Const.KEY_IS_UPDATED));
            cursor.close();
            return status;
        }
        cursor.close();
    } catch (Exception e) {
        return 0;
    }
    return 0;
    }

实施例

public Product getTestProduct(String productId){
    Product product = null;
    if (ProductComboUtils.isProdUpdated(productId) == 1) {
        return product = ProductComboUtils.getProductById(productId);
    }else{
        LOG.info("Product does not exist in ProductComboUtils, fetching from DB");
        return product = getProduct(productId);
}
}

在获取产品信息之前,请使用您的主要和检查值调用上述方法。如果它返回1然后继续,否则提示用户没有可用的信息。