2012-06-04 4 views
0

"eq, ne, gt, ..."와 같은 매개 변수를 가져 와서 데이터를 비교하는 case 문이 있습니다. 실제로이 메서드는 필터 매개 변수와 필터 값을 가져 와서 데이터를 필터링합니다. 어떻게 코드 아래에서 리팩토링 할 수 있습니까? 감사.사례문 및 동적 연산자 리 팩터링

     For iRow As Integer = 1 To ...... 
             ....... 
             columnData = rowData(HeaderIndex) 

             Case "eq" 
              If Not (columnData = filterData) Then 
               arrayDel(iRow) = True 
               droppedRows += 1 
              End If 

             Case "ne" 
              If Not (columnData <> filterData) Then 
               arrayDel(iRow) = True 
               droppedRows += 1 
              End If 

             Case "gt" 
              If Not (columnData > filterData) Then 
               arrayDel(iRow) = True 
               droppedRows += 1 
              End If 

             Case "ge" 
              If Not (columnData >= filterData) Then 
               arrayDel(iRow) = True 
               droppedRows += 1 
              End If 
+0

복잡성을 줄이기 위해 LINQ를 사용할 수있는 것처럼 보입니다. 그러나 그 때문에 우리는 more (rowData, filterData, arrayDel, ...)를 볼 필요가 있습니다. –

답변

2

문자열과 열과 필터 데이터를 취한 함수를 사용하는 것 외에 관련 부울 값을 반환하는 것도있을 수 있습니다.

중복 된 줄을 보거나 남겨두기가 훨씬 쉬워졌습니다 (새 기능을 호출 한 후 한 곳에서만 호출 됨).

관련 문제