2013-07-04 2 views
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 번호는 다음과 같이

+0

6 개의 경우에 잘못 인쇄되었으므로 다른 컨트롤이 사용되었습니다 – user1734493

답변

0

뭔가 비동기 호출을 통해이 번호를 형성 할 수있다 어쩌면 ?

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

다음 true를 리턴하는 기능을 갖는 요소를 발견하기 위해 배열을 반복.

+0

하나의 매개 변수가 다른 조건으로 조건을 사용하면 copypaste가 많이 발생합니다. – user1734493

+0

DFA를 기억합니까? 이 항목이 마음에 들지 않으면 DFA를 구현할 수 있습니다. 상태를 가지며, 전환은 위와 유사한 기능으로 정의됩니다. 이 경우 반복 횟수는 줄어 듭니다. 하지만 그만한 가치가 있니? – akonsu

+0

은 일종의 자전거가 아니십니까? – user1734493