8
votes

C #: Que voudriez-vous nommer une classe iEnumerable?

Lorsque vous lisez Cette question j'ai commencé à me demander un peu. Dites que vous avez ces deux: xxx pré>

Que feriez-vous un iEnumerable code>? P>

var products = new Products(); // products is/are products


6 commentaires

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.


9 Réponses :


0
votes

Si vous regardez les types dans le cadre .NET qui implémente ienumerable , je dirais que le suffixe le plus courant est Collection , 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 et pile ). Je voterais personnellement pour Collection comme choix de première main.


0 commentaires

0
votes

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.

Quelques suggestions:

  • Producteriterator: Ceci iTerates Products.
  • productrétriever: cela récupère des produits.
  • produitCreator: Cela crée de nouveaux produits au moment de l'exécution.

1 commentaires

Je ne l'appellerais pas producteratorator . Si vous implémentez iEnumerable , il y a une méthode getenumerator qui renvoie un ienumerator qui est l'itérateur réel.



8
votes

Vous ne basez généralement pas le nom d'une classe d'une classe interface 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 , 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.)

Votre exemple est quelque peu invalidé par le fait qu'un produit conçu doit implémenter icollection et ienumerable < Produit> Bien qu'un de produits bien conçu doit mettre en œuvre ces interfaces ainsi que IList . .

Si vous regardez dans la BCL du cadre .NET, vous devriez remarquer que c'est précisément le cas. La classe list implémente les trois interfaces, de même que la catégorie Collection (bien que notez que dans le cas général, une «collection» n'a pas besoin d'implémenter Ilist ).


1 commentaires

@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.



2
votes

Cela dépendrait du contexte, par exemple, il pourrait s'agir d'un produitCatalog (impliquant la nature en lecture seule du iEnumerable ).

Plus généralement, il pourrait être ProduitsView . Bien sûr, le Produits récupéré serait modifiable, mais je pense qu'il "sonne" approprié néanmoins.


0 commentaires

0
votes

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.


0 commentaires

5
votes

si cela implémente uniquement ienumerable , alors je nommerais cela producteur général (code>, mais je vous sentirais libre de nommer une instance de celui-ci Produits . D'autre part, je ne me souviens jamais de créer une classe qui implémente uniquement ienumerable . Ne semble pas être beaucoup de point si vous ne pouvez pas y ajouter de choses et si vous le pouvez, alors je dérive de l'une des classes de collecte qui implémentent ienumerable et hériter de ce comportement aussi.

Si je retourne une énumération d'entités de produits, je le retournerais comme ienumerable sans avoir une classe spéciale.


0 commentaires

6
votes

Je pense que "séquence" serait un bon suffixe.


2 commentaires

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.



0
votes

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.)?


0 commentaires

-1
votes

Je dirais collection . 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).

Pour résoudre cette question et l'autre question, utilisez ceci;)
http://www.classnamer.com/


0 commentaires