récemment dans le livre GOOS j'ai trouvé idée intéressante de types d'emballages communs (tels que les collections) dans ses propres cours:
Essayez d'utiliser la langue du problème que vous travaillez, plutôt que la langue. Constructions nettes. Il réduit l'écart conceptuel entre domaine et code. Essayez également de limiter en passant des types avec des génériques. C'est une forme de duplication . C'est un indice qu'il existe un concept de domaine qui devrait être extrait au type.
Franchement je ne suis pas extrémale dans l'emballage des collections génériques communes, mais même donner un type propre nom le fait correspondre plus facile à lire et à comprendre:
public class UserNameDictionary : Dictionary<int, string>
{
}
Très simple.Et maintenant, ce qui est mieux lire:
Dictionary<int, string> users = new Dictionary<int, string>();
UserNameDictionary users = new UserNameDictionary();
ajoutez vous pouvez également rapidement commentaire à votre classe:
/// <summary>
/// Represents a dictionary of user names accessed by ids.
/// </summary>
Ce ne sera pas ajouter des commentaires à des méthodes telles que Ajouter (int, string), mais quand d'autres les gens vont utiliser cette classe, ils penseront dans le contexte de UserNameDictionary
, pas dans le contexte Dictionary<int, string>
abstrait.
Si vous voulez rendre votre classe plus pratique, vous pouvez cacher les méthodes de classe de base:
public new void Add(int userId, string userName)
{
base.Add(userId, userName);
}
Pour les cas d'utilisation plus complexes, je partirais avec classe personnalisée qui délèguent du travail au dictionnaire interne.
ressemble vraiment surpuissant pour moi ... –