2009-06-10 11 views
1

Est-ce que quelqu'un a des suggestions sur la façon de concevoir une classe de conteneur, en C#, qui contient plus de trente variables contenues dans cette classe? Je l'ai écrit comme un ensemble de variables, car il y a quelques types différents, par exemple string ou DateTime, mais je pense qu'il vaudrait peut-être mieux les placer tous dans un dictionnaire d'objets avec leur propriété noms comme clés?Grand nombre de variables à l'intérieur d'une classe de conteneur

Cheers, Ed

Répondre

5

Si tous les champs sont nécessaires, ils sont alors nécessaires. L'utilisation d'un dictionnaire peut seulement ajouter un surcoût et engager des coûts supplémentaires de mémoire. Une approche de dictionnaire peut être utile dans quelques scénarios spécifiques, tels que les implémentations de sac de propriété, et les gestionnaires d'événements épars (puisque les événements sont les données éparses les plus évidentes).

Si les champs sont utilisés à faible densité (c.-à-souvent pas plus de quelques-uns sont en cours d'utilisation), alors peut-être pousser les champs liés à un certain nombre de classes internes (par groupe de domaines connexes) - à savoir au lieu de:

class Foo { 
    string userName; 
    int userId; 

    string orderReference; 
    DateTime orderDate; 

    ... 
} 

quelque chose comme:

class Foo { 
    class UserInfo { // move this outside if it makes sense to re-use it 
      public int Name {get;set;} 
      public int Id {get;set;} 
    } 
    UserInfo user; 

    class OrderInfo { // move this outside if it makes sense to re-use it 
     public string Reference {get;set;} 
     public string Date {get;set;} 
    } 
    OrderInfo order; 
} 

Ensuite, lorsque vous devez stocker les données utilisateur, créez un nouveau UserInfo; Si vous n'avez pas besoin des données utilisateur, laissez user null.

+0

C'est effectivement la mise en œuvre que je suis déjà en train de conduire, alors merci de me sauver la conscience! Cependant, les 30+ variables sont déjà sur la classe de base, puis nous divisons le REST (Oui, ce build est fou, et ce n'est pas mon travail de le corriger, pensez à eBay mais pour quelques produits spécialisés) en sous-classes séparées , chacun avec un autre 15+ propriétés! Il n'y a aucun moyen de le rendre joli ou joli, donc je vais juste garder l'approche des propriétés multiples! –

Questions connexes