Что делать, если имя перечисления конфликтует с именем класса? - PullRequest
5 голосов
/ 04 декабря 2011

У меня есть enum Pitch и класс Pitch, оба естественно для меня должны быть названы как таковые, однако это сбивает с толку иметь оба с одним и тем же именем. Существуют ли какие-либо рекомендации, когда имя enum вступает в конфликт с типом класса?

Пример:

public enum Pitch
{
    Fastball,
    Sinker,
    Curveball
}

public class Pitch
{
}

Ответы [ 5 ]

7 голосов
/ 04 декабря 2011

Назовите enum PitchType, PitchKind, PitchMagnitude, PitchQuality, PitchShape, PitchSpeed, PitchStrength или любой другой, который подходит лучше всего.


Другое соображение заключается в том, можно ли улучшить дизайн класса.Вместо того чтобы иметь свойство PitchType внутри класса Pitch, вы также можете создать иерархию классов:

public abstract class Pitch {}

public class Fastball : Pitch {}

public class Sinker : Pitch {}

public class Curveball : Pitch {}
3 голосов
/ 04 декабря 2011

Вставить перечисление в класс:

public class Pitch
{
    public enum Kind {
        Fastball, 
        Curveball, 
        Sinker
    }
}

Вы можете получить к нему доступ через класс:

Pitch.Kind.Fastball
3 голосов
/ 04 декабря 2011

Используйте пространства имен для их логической группировки.Для каркаса именем класса является полное имя, которое может быть MusicPlayer.Notes.Pitch, а не просто Pitch.Таким образом, классы в разных пространствах имен не могут конфликтовать.

1 голос
/ 04 декабря 2011

Если перечисление не внедрено в класс, убедитесь, что вы используете другое имя перед меткой, чтобы предотвратить конфликт имен.Вы также можете использовать пространства имен, как предложено Джои.

0 голосов
/ 06 апреля 2018
public class Pitch
{
    public enum Enum {
        Fastball, 
        Curveball, 
        Sinker
    }
}

Pitch.Enum.Fastball

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...