2013-07-04 59 views
0

我有JS功能選擇從多參數報告編號(2個複選框,3個下拉字段),我有一個非常大的條件語句像這樣的JavaScript乘條件語句

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#可以用來形成通過異步調用這個數字

+0

錯誤打印了6個案例,還有另一個控件使用 – user1734493

回答

0

這樣的事情也許?

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

然後遍歷這個陣列發現其具有返回true的功能的元件。

+0

哪裏會有很多使用條件的複製粘貼,其中一個參數不同 – user1734493

+0

記住DFA?如果您不喜歡這個,可以實施DFA。有一個狀態,並且轉換定義爲與上面類似的功能。在這種情況下,您的重複次數會減少。但是這值得嗎? – akonsu

+0

是不是一種自行車? – user1734493