-3
  public static final int FALSE = 0;
  public static final int TRUE = 10;

请告诉我一件事,我在下面的代码中有这个

     if (!walgreensRewardsSupport.isPreProdOrTrainingMode()
        && walgreensRewardsSupport.isWagRewardsRedeemptionEnabled()
        && null != walgreensRewardsInfoLine
        && null != walgreensRewardsInfoLine.getMemberFullProfile()
        && (null != walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints())
        && (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() != 0)
        && !transaction
            .getBooleanValue(ITransactionHashtableWag.REWARDS_REDEMPTION_ZIPCODE_LIMIT_REACHED)
        && !walgreensRewardsRedemptionSupport.isLoyaltyRedemptionTenderLineExist(transaction)
        // No need to force recalculation each time, recalculation happens after any tender line is
        // added to transaction.
        && walgreensRewardsRedemptionSupport.getRedemptionEligibleTransactionAmount(transaction,
            true, false).isGreaterThanZero()) {
      return TRUE;
    }   
else {
      return FALSE;
    }

  }

现在我必须在它之间添加一个条件...检查 walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getValues().size() 是否为 0 然后返回 False ..我已经按照以下方式完成了..

     if (!walgreensRewardsSupport.isPreProdOrTrainingMode()
        && walgreensRewardsSupport.isWagRewardsRedeemptionEnabled()
        && null != walgreensRewardsInfoLine
        && null != walgreensRewardsInfoLine.getMemberFullProfile()
        && (null != walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints())
        && (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() != 0)
        && !transaction
            .getBooleanValue(ITransactionHashtableWag.REWARDS_REDEMPTION_ZIPCODE_LIMIT_REACHED)
        && !walgreensRewardsRedemptionSupport.isLoyaltyRedemptionTenderLineExist(transaction)
        // No need to force recalculation each time, recalculation happens after any tender line is
        // added to transaction.
        && walgreensRewardsRedemptionSupport.getRedemptionEligibleTransactionAmount(transaction,
            true, false).isGreaterThanZero()) {
      return TRUE;
    }else if (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() == 0)
{
return FALSE
}   
else {
      return FALSE;
    }

  }

请指教是否正确..!!

4

2 回答 2

2

在第一个代码块中,您有:

if (condition) {
  return TRUE;
} else {
  return FALSE;
}

这可以简化为:

return (condition) ? TRUE : FALSE;

如果 TRUE 和 FALSE 只是布尔值,

return (condition);

在第二个代码块中,您有:

if (condition1) {
  return TRUE;
} else if (condition2) {
  return FALSE;
} else {
  return FALSE;
}

else-if 没有任何价值,除非您预计第二个条件的评估会产生副作用。

还要注意,对私有方法的一些深思熟虑的使用可以使这段代码更容易理解。你可以像这样封装你的大条件的一部分:

private boolean hasRewardsPointsBalance(InfoLine infoLine) {
  if (null == infoLine) return false;
  MemberProfile profile = infoLine.getMemberFullProfile();
  if (null == profile) return false;
  RewardsPoints rewards = profile..getRewardPoints();
  if (null == rewards) return false;
  return (rewards.getCurrentBalance() != 0);
}
于 2012-05-31T17:42:07.627 回答
0

最好将您想要的 false 的逻辑补码添加到逻辑上并一起返回 true 的条件集。

例如:

 if (!walgreensRewardsSupport.isPreProdOrTrainingMode()

    && walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints()
       .getValues().size() != 0

    && walgreensRewardsSupport.isWagRewardsRedeemptionEnabled()
    && null != walgreensRewardsInfoLine
    && null != walgreensRewardsInfoLine.getMemberFullProfile()
    && (null != walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints())
    && (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() != 0)
    && !transaction
        .getBooleanValue(ITransactionHashtableWag.REWARDS_REDEMPTION_ZIPCODE_LIMIT_REACHED)
    && !walgreensRewardsRedemptionSupport.isLoyaltyRedemptionTenderLineExist(transaction)
    // No need to force recalculation each time, recalculation happens after any tender line is
    // added to transaction.
    && walgreensRewardsRedemptionSupport.getRedemptionEligibleTransactionAmount(transaction,
        true, false).isGreaterThanZero()) {

  return TRUE;


这比您编写的代码要简单。

于 2012-05-31T18:08:54.903 回答