案例陈述和动态算子的重构

时间:2012-06-04 09:14:10

标签: vb.net refactoring

我有一个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

1 个答案:

答案 0 :(得分:2)

一种方法可能是使用一个函数来获取字符串以及列和过滤数据,并简单地返回相关的布尔值。

Case "eq"
    return (columnData = filterData)
Case "ne"
    return (columnData <> filterData)
Case "gt"
    return (columnData > filterData)
Case "ge"
    return (columnData >= filterData)

这样更容易查看并省略重复的行(在调用我们的新函数后,现在只在一个地方调用)。