我有一个case语句,它通过获取诸如“eq,ne,gt,...”等参数来比较数据。实际上,此方法将通过获取过滤器参数和过滤器值来过滤数据。我怎样才能重构代码?感谢。
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 :(得分:2)
一种方法可能是使用一个函数来获取字符串以及列和过滤数据,并简单地返回相关的布尔值。
Case "eq"
return (columnData = filterData)
Case "ne"
return (columnData <> filterData)
Case "gt"
return (columnData > filterData)
Case "ge"
return (columnData >= filterData)
这样更容易查看并省略重复的行(在调用我们的新函数后,现在只在一个地方调用)。