gpt4 book ai didi

java - 过度使用 If else 语句

转载 作者:行者123 更新时间:2023-12-01 06:46:31 26 4
gpt4 key购买 nike

我有一个查询,即我使用了一种方法,但我多次使用 If Else ..不是它变得非常模糊,请建议我也可以使用其他条件循环..下面是我的代码..

 if (cardType == AARP_CARD_TYPE) {
userResponse = messageBox.showMessage("CandidateAARPCardAttachCardToExistingTransaction",
null, IMessageBox.YESNO); // MSG:31.59
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
WalgreensRewardsConstants.ATTACH_CANDIDATE_AARP_CARD);
} else if ((cardType == PSC_CARD_TYPE) && ((!PosHelper.isRunningAsService()))) {
userResponse = messageBox.showMessage("PendingPSCCardAttachCardToExistingTransaction", null,
IMessageBox.YESNO); // MSG:31.60
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
WalgreensRewardsConstants.ATTACH_PENDING_PSC_CARD);

} else if ((cardType == DR_CARD_TYPE) && ((!PosHelper.isRunningAsService()))) {
userResponse = messageBox.showMessage("PendingDRCardAttachCardToExistingTransaction", null,
IMessageBox.YESNO); // MSG:31.63
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
WalgreensRewardsConstants.ATTACH_PENDING_DR_CARD);

} else if ((cardType == WAG_LOYALTY_CARD_TYPE)){
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
WalgreensRewardsConstants.ATTACH_NOT_ON_FILE);

if((!PosHelper.isRunningAsService())) {
userResponse = messageBox.showMessage("CardNotOnFileToAttach", null, IMessageBox.YESNO); // MSG:31.32
// BUC
// 1.22.1
}


} else { // If the device is neither of these, POS displays Message 1
// Button, MSG 31.14. [BUC
// 1.23.2]
displayMessage("InvalidLoyaltyCard");
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
NOT_VALID_LOYALTY_CARD);
userResponse = -1;
}

请告诉我如何使用其他一些条件语句来改进我的上述逻辑,因为使用了很多n很多If Else..!!

最佳答案

如果 cardType 是一个枚举,您可以向枚举添加方法(例如 getNamegetWag 等)并调用它:

userResponse = messageBox.showMessage(cardType.getMessage(), ...
transaction.setValue(cardType.getWag(), cardType.getRewards());

如果它是 int 或其他非枚举类型,您可以使用已经建议的开关,或者考虑切换(哈哈)到枚举。您还可以将 PosHelper.isRunningAsService() 设为这些方法的 boolean 参数,并且看起来您的所有 if/else 代码将减少到 3 或 4 行(尽管它会引入一些耦合,但你似乎已经有很多了)。

您的枚举可能如下所示(简单的示例,您可以根据需要使其复杂化):

public enum CardType {
AARP_CARD_TYPE {
public String getName() {
return "CandidateAARPCardAttachCardToExistingTransaction";
}
},
PSC_CARD_TYPE {
public String getName() {
return "PendingPSCCardAttachCardToExistingTransaction";
}
};

public abstract String getName();
}

或更紧凑,如果您不需要方法中的复杂逻辑:

    public static enum CardType {
AARP_CARD_TYPE("CandidateAARPCardAttachCardToExistingTransaction"),
PSC_CARD_TYPE ("PendingPSCCardAttachCardToExistingTransaction");

private final String transactionName;

CardType(String transactionName) {
this.transactionName = transactionName;
}

public String getName() {
return transactionName;
}
}

关于java - 过度使用 If else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com