J'ai un ami qui se lance dans le développement .NET après avoir développé en Java pendant des années et, après avoir examiné certains de ses codes, j'ai remarqué qu'il fait assez souvent ce qui suit :
IDictionary<string, MyClass> dictionary = new Dictionary<string, MyClass>();
Il déclare que le dictionnaire est l'interface plutôt que la classe. Typiquement, je ferais ce qui suit :
Dictionary<string, MyClass> dictionary = new Dictionary<string, MyClass>();
Je n'utiliserais l'interface IDictionary que lorsqu'elle est nécessaire (par exemple, pour passer le dictionnaire à une méthode qui accepte une interface IDictionary).
Ma question est la suivante : sa façon de faire a-t-elle des mérites ? S'agit-il d'une pratique courante en Java ?
12 votes
Pour les variables locales, il n'y a vraiment aucun intérêt.
0 votes
Dupe : stackoverflow.com/questions/1484445/
6 votes
Une bonne pratique MAIS Attention au coût de la performance : nimaara.com/2016/03/06/beware-of-the-idictionary-tkey-tvalue
1 votes
Les deux principales implémentations de
IDictionary
(Dictionary
yConcurrentDictionary
) ont des caractéristiques de performance très différentes (par ex.Count
est très rapide sur le premier et très lent sur le second). À ce titre, je recommande de spécifier la classe concrète (au lieu deIDictionary
) en C#, si possible, afin que le consommateur sache comment utiliser le dictionnaire de manière performante.1 votes
En outre,
IDictionary
a quelques "bizarreries" de performance - nimaara.com/2016/03/06/beware-of-the-idictionary-tkey-tvalue .