switch (itemScene)
{
case 1:
{
switch (type)
{
case 1:
{
switch (itemLevel)
{
case 1:
facilityItemList[0][0][0].Add(item);
break;
case 2:
facilityItemList[0][0][1].Add(item);
break;
//TODO
}
}
break;
}
}
break;
}
框架类似这样,switch中嵌套switch,每一个switch有七八个case,这样这段代码会过于臃肿,请问有什么办法可以优化这部分结构呢
如果itemScene type itemLevel 的值都是1到n,比facilityItemList数组对应下标多1,可以直接这样
facilityItemList[itemScene-1][type-1][itemLevel-1].Add(item);
其实无论怎么写其实都一样。
我来说几个东西,你自己查资料,查完后,你就可以知道,无论怎么写其实都一样,判定总会存在,只不过是的区别是散着写,还是集中写
1.有限状态机--------------状态表
2.管道分支
3.设计模式状态模式
其实这3个总逻辑上一样。都是先有状态表,状态上下文,然后把你的判定放到下面具体类延后判定,伪代码说明
class 上下文
{
itemScene
itemLevel
}
假设我用职责链(或者叫管道把)
管道 管道=new 管道<上下文>
管道.addHandler<状态处理1>()
管道.addHandler<状态处理2>()
管道.执行(new 上下文(){1,1})
class 状态处理1
{
if x==1&&y==1
归我状态1处理
else
不归我处理,继续调用下一级管道
next(上下文)
}
class 状态处理2
{
if x==1&&y==0
归我状态2处理
else
不归我处理,继续调用下一级管道
next(上下文)
}
你可以看到是的是,判定还是判定,谁写都少不了,只是把判定分拆,交给后面的对象自己去判定
你可以先全部加在一个list里。
然后用linq做筛选。
https://www.cnblogs.com/yplong/p/5416696.html
函数化
善用数组下标
看到的情况发现case的情况比较少,为什么不用if+else?