Java 关于If-Else的最低使用量
可能重复:Java 关于If-Else的最低使用量,java,Java,可能重复: 下面的代码过度使用了if-else语句 if (cardType == AARP_CARD_TYPE) { userResponse = messageBox.showMessage("CandidateAARPCardAttachCardToExistingTransaction", null, IMessageBox.YESNO); // MSG:31.59 transaction.setValue(ITransactionHashtableWag.LOY
下面的代码过度使用了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;
}
我想在下面的表格中删除if-else staement的过度使用
byte cardType ;
switch (cardType) {
case AARP_CARD_TYPE:
userResponse = messageBox.showMessage("CandidateAARPCardAttachCardToExistingTransaction",
null, IMessageBox.YESNO); // MSG:31.59
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
WalgreensRewardsConstants.ATTACH_CANDIDATE_AARP_CARD);
// blah
break;
case PSC_CARD_TYPE:
if ((!PosHelper.isRunningAsService())
{
userResponse = messageBox.showMessage("PendingPSCCardAttachCardToExistingTransaction", null,
IMessageBox.YESNO); // MSG:31.60
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
WalgreensRewardsConstants.ATTACH_PENDING_PSC_CARD);
}
// blah
break;
case DR_CARD_TYPE :
if ((!PosHelper.isRunningAsService())
{
userResponse = messageBox.showMessage("PendingDRCardAttachCardToExistingTransaction", null,
IMessageBox.YESNO); // MSG:31.63
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
WalgreensRewardsConstants.ATTACH_PENDING_DR_CARD);
// blah
break;
case 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
}
// blah
break;
// ...
default:
displayMessage("InvalidLoyaltyCard");
transaction.setValue(ITransactionHashtableWag.LOYALTY_MESSAGE_DISPLAYED,
NOT_VALID_LOYALTY_CARD);
userResponse = -1;
break;
}
请告知它是否正确 有效吗?它看起来确实比您修改它的方式干净得多这两种方法是不同的。在第一种情况下,
如果(cardType==PSC\u CARD\u TYPE&&PosHelper.isruningasservice())
则代码转到默认的else子句,而在第二种情况下,它什么也不做(break;
)
ps:难道您没有单元测试来运行以查看它是否按预期工作吗?而不是if-else语句或开关用例 我更喜欢使用键到代理的映射。 您可以创建一个包含所有代理的hashmap,只需调用正确的代理即可。 看 这将为您提供一个干净的代码
PointersToMethods.get(key.call()代码>运行代码时,它是否执行了您希望它执行的操作?也就是说,它运行正常,但您只想知道这是否是一种好的编码方法?如果它正常工作,那么它可能是正确的。。!!你应该编辑你以前的问题,要求澄清疑问,而不是发布一个新的问题!这将是一个很好的答案。@assylias..如果你能在我的第二个案例中编写并修改,使它与第一个案例相等,那将是一个很大的帮助one@user1406575我认为这很清楚:在cardType==PSC\u CARD\u TYPE
和PosHelper.isruningasservice()==true
的情况下,您的第一个代码转到else,而第二个代码没有转到默认值。@assylias..请您通过编写完整的代码来纠正我的第二种方法,就像我使用正确的实现所做的那样…这将是一个很大的帮助..谢谢inadvance@user1406575我认为您需要了解有关StackOverflow的一些事情(这是一个友好的评论). 1.2.我已经回答了你之前的问题,即这种方法是混乱的。现在你明白为什么了。3.这是一种很好的做法,我建议您回到上一个问题,看看这是否适用。@user1406575最后,一旦您遵循网站指南,您会发现一些用户非常有知识和帮助。