0

乗算パラメーター (2 つのチェックボックス、3 つのドロップダウン フィールド) からレポート番号を選択する js 関数があり、このような非常に大きな条件ステートメントを取得しました。

    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 に答える