2009-01-25 6 views
1

Je me demande si vous pensez qu'il est nécessaire de remanier cette classe (en ce qui concerne la séparation des préoccupations)application séparation des préoccupations

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

ReadMappingFromAttributes -. Reads la mise en correspondance du type T et le stocke dans la classe . A un nom de la liste à utiliser et un nombre de csvMappingColumns qui contient le nom de la propriété pour définir la valeur et le nom de csvcolumns.

GetObjectsFromList - utilise un CVSListreader (qui est passé via le constructeur) pour obtenir les données de toute la ligne est comme KeyValuePair (Key = csvcolumnName, valeur = valeur réellement) et après qu'il utilise le mappinginformation (listname et csvMappingColumns) à définir les données dans l'objet.

Je ne peux pas décider si cette classe a 2 soucis ou un. D'abord j'ai senti qu'il en avait deux et j'ai commencé à refactoriser la conversion des rangées en objet en un autre objet. Mais après cela, je me sentais gêné d'utiliser la fonctionnalité, comme je devais d'abord créer un pilote de cartographie, et ensuite je devais récupérer les lignes et les transmettre avec le mappage au "mapper" pour convertir les objets des rangées

/w

Répondre

1

Cela ressemble à deux préoccupations pour moi: l'analyse et la cartographie/liaison. Je les séparerais. L'analyse CSV devrait être un problème bien défini. Et vous devriez vous préoccuper de plus que de la simple cartographie. Et la validation? Si vous analysez une chaîne de date, ne voulez-vous pas vous assurer qu'elle est valide avant de la lier à un attribut d'objet? Je pense que tu devrais.

0

Règle de base: si c'est bizarre, c'est faux.

Je dois dire que j'ai du mal à comprendre ce que vous avez écrit là-bas, mais je pense qu'il est probable que vous ayez besoin de refactoriser la classe: les noms ne semblent pas clairs, toute méthode GetFoo() void, et il se peut que l'ensemble ReadMappingFromAttribute soit simplement une logique constructeur.