1

このクラスをリファクタリングする必要があると思いますか。(関心の分離に関して)

publi class CSVLIstMapping<T>
{
 void ReadMappingFromAttirbutes();
 void GetDataFromList();
}

ReadMappingFromAttributes-タイプTからマッピングを読み取り、クラスに格納します。使用するリストの名前と、値を設定するプロパティの名前とcsvcolumnsの名前を含むいくつかのcsvMappingColumnsがあります。

GetObjectsFromList-CVSListreader(コンストラクターを介して渡される)を使用して、すべての行からKeyValuePair(Key = csvcolumnName、value = actual value)としてデータを取得し、その後、mappinginformation(listnameおよびcsvMappingColumns)を使用してデータを設定します。オブジェクト。

このクラスに2つの懸念があるのか​​1つあるのか判断できません。最初に、2つあると感じ、行からオブジェクト、別のオブジェクトへの変換をリファクタリングし始めました。しかし、この後、最初にmappingretriverを作成する必要があったため、この機能を使用するのは厄介でした。その後、行を取得し、マッピングと一緒に「マッパー」に渡して、オブジェクトを行から変換する必要がありました。

/ w

4

2 に答える 2

1

私には2つの懸念のように聞こえます:解析とマッピング/バインディングです。私はそれらを分離します。CSV解析は、明確に定義された問題である必要があります。そして、あなたは単なるマッピング以上のものを気にする必要があります。検証はどうですか?日付文字列を解析する場合、オブジェクト属性にバインドする前に、日付文字列が有効であることを確認しませんか?私はあなたがすべきだと思います。

于 2009-01-25T23:09:33.077 に答える
0

経験則:それが厄介な場合、それは間違っています。

そこに書いた内容を理解するのは難しいと言わざるを得ませんが、クラスをリファクタリングする必要があると思います。名前が不明確に見え、呼び出されたメソッドGetFoo()が実際にvoidを返さないようにする必要があります。 ReadMappingFromAttribute全体がコンストラクターロジックである必要がある可能性があります。

于 2009-01-25T23:11:18.673 に答える