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

2番目のコードブロックには、次のものがあります。

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

2番目の条件の評価から副作用が予想されない限り、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

true を返すために論理的に結合されている条件のセットに、false に必要なものの論理的な補数を追加することをお勧めします。

例えば:

 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 に答える