我有一个继续增长的SELECT / SWITCH语句......我想我应该完成。
但是,目前有19种选择......有什么比这更好的吗?
C#编码
IE:
switch (Request["typeOfRequest"].ToString())
{
case "comboFills":
Response.ContentType = "text";
Response.Write(getVizData());
break;
case "linkFormField":
Response.ContentType = "text";
Response.Write(getVizRuleFields());
break;
case "getDispositions":
答案 0 :(得分:2)
Switch语句可能比那些大......但是,最终你可能会遇到效率问题。我不认为19个案件是个问题。我有更大的陈述。通常,switch语句不是处理瓶颈,所以这是你优化的最后一件事。
每个案例都会转换为CPU作为测试和跳转,因此请考虑最坏情况下的操作次数,并确定是否值得大惊小怪,以及实际节省的操作数(最坏情况和平均值)
说,有几个明显的选择。如果您有数字类型且均匀分布,则可以将switch语句拆分为多个开关....
if value < 50
switch
...
end
else if value < 100
switch
...
end
else
...
end
这当然很难维护,并且可能依赖于使代码变得丑陋的常量值的知识。它真的只是一个垃圾搜索树......
另一种方法是将所有案例放入函数中,并构建一个树或哈希表,将每个值映射到函数处理程序。这样,您始终可以依赖O(logN)搜索时间(或者更好,在哈希表的情况下)。我再说一遍:除非你有充分的理由,否则不要这样做。
希望有助于您提供一些见解。抱歉不是语言特定的。你没有提到一种语言,但我认为它类似于BASIC。