【发布时间】:2017-04-13 02:27:34
【问题描述】:
我遇到了需要检查多个条件的情况,其中每个组合都有不同的结果。在我的具体情况下,我有 2 个变量,它们是枚举类型,每个变量可以是 2 个不同的值。
enum Enum1
{
COND_1,
COND_2
}
enum EnumA
{
COND_A,
COND_B
}
Enum1 var1;
EnumA varA;
这给了我 4 种可能的条件,这需要 4 种不同的结果。我想出了几种不同的方法来做到这一点,无论是使用 if 语句还是 switch 语句:
if(var1 == Enum1.COND_1 && varA == EnumA.COND_A)
{
// Code
}
else if(var1 == Enum1.COND_1 && varA == EnumA.COND_B)
{
// Code
}
else if(var1 == Enum1.COND_2 && varA == EnumA.COND_A)
{
// Code
}
else if(var1 == Enum1.COND_2 && varA == EnumA.COND_B)
{
// Code
}
或者:
switch(var1)
{
case COND_1:
switch(varA)
{
case COND_A:
// Code
break;
case COND_B:
// Code
break;
}
break;
case COND_2:
switch(varA)
{
case COND_A:
// Code
break;
case COND_B:
// Code
break;
}
break;
}
我想到了其他人,但不想用代码填充它:P 我想知道最好的方法是什么。我认为 switch 更容易阅读,但 ifs 更短。我认为如果开关可以有多个条件会很酷,但我还没有听说过。这也引出了一个问题:对于任意数量的变量和可能的值,最好的方法是什么?
【问题讨论】:
-
如果您以认真的方式执行此操作,那么您可能会使用规则引擎或其他将所有代码抽象出来的第三方系统。跨度>
-
为什么需要检查多个这样的条件?你到底在做什么?这可能会通过重新设计以更好的方式解决,而不是尝试在 if 和 switch 之间做出决定。
-
主要是设置一些变量。它们彼此独立,所以我没有看到比检查条件更优雅的解决方案。
-
我亲自与其他一些程序员交谈过,他们都推荐嵌套开关。我会将其添加为答案,但由于问题是基于意见的,它们已被关闭。我很抱歉。感谢那些回答的人!
标签: java performance conditional