中国开发网: 论坛: 程序员情感CBD: 贴子 592738
变废为宝
[技术贴][基础题]switch和if..elseif的选择
昨天写程序的时候,发觉有多个条件而且每个条件的取值比较多的时候,用switch写的程序很难读。。。
比如
onKeyEvent(keycode)
{
switch(keycode)
{
case 1:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 3:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 4:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 5:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 6:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 7:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 8:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 9:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 10:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 11:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 12:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 13:
{
switch(status_a)
{
case 1:
{
switch(status_b)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
case 7:
{
break;
}
case 8:
{
break;
}
case 9:
{
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 12:
{
break;
}
case 13:
{
break;
}
}
break;
}
}
}
这样的,要是每一个代码段前面不加注释的话,想知道这段代码是在什么条件下执行的,要上下翻好long好long,来回翻代码头都晕掉了。。。
我想要是换成这样:
onKeyEvent(keycode)
{
if(keycode==1 && status_a==1 && status_b==1)
{
}
else if(keycode ==1 && status_a==1 && status_b==2)
{
}
else if(keycode ==1 && status_a==1 && status_b==3)
{
}
else if(keycode ==1 && status_a==1 && status_b==4)
{
}
else if(keycode ==1 && status_a==1 && status_b==5)
{
}
else if(keycode ==1 && status_a==1 && status_b==6)
{
}
else if(keycode ==1 && status_a==1 && status_b==7)
{
}
.................
}
这样,虽然也是又臭又长,执行效率还低点,但至少看一段代码的时候只要看一个if判断就知道这个是什么条件了。。。

大牛们给点建议吧。。。。
“烧鹅”要火,赶紧的改

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录