0

「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
4

1 に答える 1

2

1 つの方法は、文字列と列を取得してデータをフィルター処理し、関連するブール値を単に返す関数を用意することです。

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

これは非常に見やすく、重複した行を除外しています (新しい関数を呼び出した後、1 か所で呼び出されるようになりました)。

于 2012-06-04T13:31:07.167 に答える