0

我有一个持续增长的 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":
4

1 回答 1

2

Switch 语句可能比这大得多……但是,最终您可能会遇到效率问题。我不认为19例是个问题。我有更大的声明。通常 switch 语句不是处理瓶颈,所以它是你优化的最后一件事。

每种情况都会作为测试和跳跃转换到 CPU 上,因此请考虑一下最坏情况会执行多少操作,并决定是否值得大惊小怪,以及实际节省多少操作(最坏情况和平均情况)。

话虽如此,有几个明显的选择。如果您有数字类型并且它们是均匀分布的,您可以将您的 switch 语句拆分为多个 switch....

if value < 50
  switch
    ...
  end
else if value < 100
  switch
    ...
  end
else
  ...
end

这当然更难维护,并且可能依赖于使您的代码难看的常量值的知识。它真的只是一个肮脏的搜索树......

另一种方法是将所有案例放入函数中,并构建将每个值映射到函数处理程序的树或哈希表。这样,您始终可以依赖 O(logN) 搜索时间(或者更好,在哈希表的情况下)。我再说一遍:除非你有充分的理由,否则不要这样做。

希望对您有所帮助。抱歉不是特定于语言的。您没有提到一种语言,但我假设它类似于 BASIC。

于 2012-08-01T15:44:46.297 回答