Lorsque vous lisez Cette question j'ai commencé à me demander un peu. Dites que vous avez ces deux: Que feriez-vous un iEnumerable
var products = new Products(); // products is/are products
9 Réponses :
Si vous regardez les types dans le cadre .NET qui implémente ienumerable
Collection code>, suivi du pluriel forme de ce que la liste contient. Ensuite, il existe un certain nombre de "cas spéciaux" (tels que
file d'attente code> et
pile code>). Je voterais personnellement pour
Collection Code> comme choix de première main. P>
Le problème ici est que la liste ou la collection imposent leur comportement de cette façon. Mais iEnumerable est très générique, non seulement dans la signification C # de générique. Chaque mise en œuvre peut être derrière elle. p>
Quelques suggestions: P>
Je ne l'appellerais pas producteratorator code>. Si vous implémentez
iEnumerable code>, il y a une méthode
getenumerator code> qui renvoie un
ienumerator code> qui est l'itérateur réel.
Vous ne basez généralement pas le nom d'une classe d'une classe interface em> IT IT. (Lequel choisissez-vous quand il y en a plusieurs, pour un début?) Il est assez typique de la baser sur une classe héritée em>, mais plus souvent sur le but de la classe, et certainement pas L'interface. (L'interface peut être nommée d'après la classe, si quelque chose.) P>
Votre exemple est quelque peu invalidé par le fait qu'un Si vous regardez dans la BCL du cadre .NET, vous devriez remarquer que c'est précisément le cas. La classe produit conçu code> doit implémenter
icollection
ienumerable < Produit> Code> Bien qu'un
de produits CODE> bien conçu doit mettre en œuvre ces interfaces ainsi que
IList
list
Collection
Ilist
@Svish: content que cela ait aidé. Le BCL est un modèle généralement bon pour aller ici (bien qu'il puisse contenir l'incohérence étrange). Tant que vous avez la cohérence dans vos propres noms de classe, vous ne pouvez pas vous tromper beaucoup.
Cela dépendrait du contexte, par exemple, il pourrait s'agir d'un Plus généralement, il pourrait être produitCatalog code> (impliquant la nature en lecture seule du
iEnumerable code>). P>
ProduitsView code>. Bien sûr, le
Produits code> récupéré serait modifiable, mais je pense qu'il "sonne" approprié néanmoins. P>
Dans presque tous les cas, je peux penser à ma propre expérience, je n'ai pas eu à penser à un nom. Le compilateur le fait pour moi, car j'écris une méthode d'itérateur au lieu d'écrire une classe à la main. Et pour le nom de la méthode, il semble naturel de simplement en faire un mot pluriel décrivant la séquence. P>
si cela implémente uniquement Si je retourne une énumération d'entités de produits, je le retournerais comme ienumerable
producteur général (code>, mais je vous sentirais libre de nommer une instance de celui-ci
Produits code>. D'autre part, je ne me souviens jamais de créer une classe qui implémente uniquement
ienumerable
ienumerable
ienumerable
Je pense que "séquence" serait un bon suffixe. P>
Pensait à cela aussi aussi.
En effet. Les affiches ci-dessus n'ont pas considéré que la liste des éléments peut être générée dynamiquement plutôt que d'être sauvegardée par une liste ou une matrice réelle.
J'aime Kek444, je pense que je devrais demander quoi d'autre fait-il? Cela implémente iEnumerable <> mais ce n'est pas tout ce qu'il fait, sinon vous n'auriez pas besoin de la classe droite? C'est une collection? Est-ce que cela transformer un énorme en un autre (modifier, sélection, génération, etc.)? P>
Je dirais collection em>. Cela pourrait suggérer une console longeonlycollection ou observableCollection, mais cela décrit bien la classe. Après tout, une collection de produits (quel que soit le type sous-jacent peut être). P>
Pour résoudre cette question et l'autre question, utilisez ceci;)
http://www.classnamer.com/ p>
Classe du produitWhozitwhatzit {...}
J'essaie d'obtenir le produitAmagig dans un chèque pendant des mois
Pour être honnête, c'est une préférence personnelle / jusqu'à la senior Dev. pour la dénomination des conventions. Je n'ai jamais hérité de "ilist" avant, à l'exception d'une occasion (juste récemment). Si j'ai besoin d'un objet de collection, je vais simplement hériter de System.Collections.Generic.List . Par exemple: "Public Class PlayerList: Liste {"
@Zack: Dans cet exemple de la tienne, personnellement, je me retrouverais probablement avec quelque chose de différent qui avait une liste. Par exemple, un jeu de classe avec une liste joueurs {obtenir; } ou quelque chose. Ayeyways, hors sujet: P
@Svish: Je crée un objet entier pour lui-même parce que je peux écrire des indexeurs pour eux. En outre, la liste de player était un exemple spécifique d'un projet de mien qui régit un serveur de jeu. "Playerlist" représente une collection de joueurs sur le serveur. :-P
Aha. Mais une liste n'a pas déjà d'indexeur? Et si vous aviez besoin d'un type d'indexeur différent, par exemple une chaîne, je penserais peut-être qu'un dictionnaire serait plus approprié. Comme si la clé était un nom de joueurs par exemple.