8
votes

Que faire quand un nom d'énorme s'afframe avec un nom de classe?

J'ai une pitchèse ENUM et une hauteur de classe, les deux naturellement pour moi devraient être nommées comme telles, mais il est confus d'avoir à la fois avec le même nom. Existe-t-il des directives pour le moment où un nom d'Enum s'afframe avec un type de classe?

Exemple: p>

public enum Pitch
{
    Fastball,
    Sinker,
    Curveball
}

public class Pitch
{
}


1 commentaires

Si vous avez deux types que vous souhaitez nommer le même, il y a probablement un problème avec votre conception. Pouvez-vous nous montrer le code de la classe et de l'énum?


5 Réponses :


3
votes

Utilisez des espaces de noms pour les regrouper logiquement. Pour le cadre, le nom de la classe est le nom complet, qui peut être musicplayer.notes.pitch et non seulement pitch . Les classes dans différents espaces de noms ne peuvent donc pas s'affronter.


3 commentaires

L'utilisation de l'utilisation de l'utilisation de la différence.


@ Okuma.scott: le à l'aide de est à propos de la gestion des ressources déterministes, le confondez-vous avec le en utilisant directive ? Dans ce cas, vous devrez simplement qualifier complètement les noms de type lorsqu'il est utilisé si vous finissez par en utilisant les deux espaces de noms. Et si vous aliasez un type à un nom déjà existant, eh bien, c'est votre problème entièrement.


Merci pour la correction - l'utilisation de la directive est ce que je voulais dire.



10
votes

Nom Le taux de pitchtype enum, pitchkind, pitchmagnitude, pitchqualité, pitchshape, pitchspeed, ligzure ou tout ce qui convient le mieux.


Une autre considération est de savoir si la conception de la classe pourrait être améliorée. Au lieu d'avoir une propriété PitchType à l'intérieur de la classe de classe, vous pouvez également créer une hiérarchie de classe: xxx


3 commentaires

Que diriez-vous de PitchType? Quelqu'un peut-il penser à un meilleur mot que de type cependant, car cela a une signification dans le runtime lui-même?


Pitch Public Enum {Fastball, Curve Ball, Blapeur}


Autres noms pour l'Enum: ActionPitch, EventPitch



4
votes

Incorporer l'énumé dans la classe: xxx

Vous pouvez ensuite y accéder via la classe: xxx


3 commentaires

J'y ai pensé, mais cela violerait-il une certaine convention de OO que je ne peux pas penser? Fait en sorte que l'on passe à travers le niveau supplémentaire de nommage juste pour faire face à un affrontement signifie qu'il est toujours bon design?


Je ne vois pas de problèmes ici. Mais l'énum doit de préférence être intégrée dans la classe dans laquelle elle sera utilisée ou au moins elle devrait avoir une relation logique forte.


Voir Stackoverflow Question Avantages et inconvénients d'utilisation de classes C ++ imbriquées et énumérations? .



1
votes

Lorsqu'un énumé n'est pas incorporé dans une classe, assurez-vous d'utiliser un nom différent avant l'étiquette afin d'empêcher les affrontements de nom. Vous pouvez également utiliser des espaces de noms comme suggéré par Joey.


0 commentaires

0
votes
public class Pitch
{
    public enum Enum {
        Fastball, 
        Curveball, 
        Sinker
    }
}
Pitch.Enum.Fastball

0 commentaires