简化条件语句Android



我有一个有条件语句的方法。我添加了IF条件,因此可以避免NPE崩溃。有什么办法可以简化我添加了非零检查的条件?

 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);
        }
    }

如果要保持首先检查 ProductComboUtils的逻辑,然后从db中获取。

由于您从两个来源获取值,所以我只需创建一种方法来使用检查(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 ...
}

您可以保留一个单独的列以获取产品信息/详细信息。

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

当您达到足够的要求时

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,然后继续,否则请提示用户以获取任何可用信息。

最新更新