0

我有 js 函数,可以从乘法参数(2 个复选框,3 个下拉字段)中选择报告编号,并且我有一个非常大的条件语句,像这样

    switch(ReportNumDrop)
    {
       case 0: NumberReport = IsDropDownValue == 0 ? 1034: 1033;
       break;

       case 1: if(CheckBoxChecked)
               {
                   NumberReport = IsDropDownValue == 0 ? 1022: 1021;

               }
               else
               {
                 NumberReport = IsDropDownValue == 0 ? 1011: 1012;
               }
               break;
          ....
          //SimilarStatement with another rep number
          ....
          case 6: if(DropDownCondition2)
                  {
                      NumberReport = SecondDropDownValue == '*' ? 1045: 1044;
                  }
                  else
                  {
                    NumberReport = ThirdDropDownValue == 0 ? 1055: 1054;
                  }
           break;
           default: break;
          }

所以,它就像有限状态图,但重构它的最简单方法是什么,这样它就可以在没有眼睛的血液的情况下读取。

(我认为它类似于 GOF 形式的命令模式)

另外,代码不是我的

PS C# 可用于通过异步调用形成此号码

4

1 回答 1

0

像这样的东西?

var fs = [
  [function () { ReportNumDrop == 0 && IsDropDownValue == 0 }, 1034],
  [function () { ReportNumDrop == 0 && IsDropDownValue != 0 }, 1033],
  ...
];

然后遍历这个数组以找到一个具有返回函数的元素true

于 2013-07-04T05:05:25.827 回答