Есть ли преимущество перед префиксом значений Enum? - PullRequest
3 голосов
/ 24 марта 2011

В этой записи Джон Скит указал, что следующий код должен быть изменен в соответствии с соглашениями об именах .NET.Это также уменьшит количество шума в коде.

Enum enUtilityTypeDetailStudentEntryWorkflow As Integer
    enUTDSEW_Default = 379
    enUTDSEW_ApplicantRecordBook = 380
End Enum

Должен признать, я был почти как овца и следил за тем, что другие делали до меня.Я думал, что префикс не выглядел правильно, и тогда иметь его дважды тоже не имело смысла.Посмотрев на пару примеров .NET Framework, кажется, что это будет ближе к стандарту.

Enum StudentEntryWorkflow As Integer
    Default = 379
    ApplicantRecordBook = 380
End Enum

Я в порядке с использованием этих имен?
Любые другие предложения или комментариивообще?

Ответы [ 4 ]

5 голосов
/ 24 марта 2011

Я не знаю о стандарте, но использование Венгерской нотации для перечислений и значений перечислений не то, что я видел раньше.

Ваш второй пример ближе к типу кода, который я обычно вижу, так что в этом отношении, да, он более стандартен.

См. Раздел 8.2.3 по этому руководству - символ паскаля без префикса / постфикса.

Рекомендация 16 раздела 2.1 Стандарты кодирования Lance Hunt's C # также гласит, что следует избегать префиксов и постфиксов.

Я бы сказал, что это довольно универсально - смысл перечислять его, чтобы улучшить читаемость. Использование префиксов и постфиксов снижает читабельность и, таким образом, совершенно не рекомендуется.

4 голосов
/ 24 марта 2011

Там, где я работаю, мы также используем префикс для перечислений (в нашем случае E), и я должен сказать, что мне это нравится.Это позволяет легко определить Enum и отличить его от класса или переменной.Вот пример из нашей кодовой базы:

myJob.Status = EJobStatus.Completed

Здесь мы можем легко увидеть, что статусу, присвоенному заданию, является значение «Завершено» из перечисления «EJobStatus».

MyЕсли не считать личных предпочтений, если вы хотите следовать соглашениям об именах .NET, префиксы для перечислений отсутствуют.Но самое главное - всегда следовать одним и тем же соглашениям в данной кодовой базе.

Редактировать: Я только что видел, что вы также ставите префикс фактических значений перечисления, а мы не делаемэто хотя.Мы всегда ссылаемся на перечисления таким образом ESomeEnum.SomeValue.В этом случае не стоит добавлять префикс к фактическому значению перечисления.Кроме того, я не думаю, что это хорошая идея использовать один и тот же префикс для имени перечисления и значений перечисления, потому что они не одно и то же.

1 голос
/ 24 марта 2011

В VB.net я не верю, что вы можете ссылаться на значение перечисления, не ставя перед ним имя с перечислением, поэтому совершенно бесполезно "префиксировать" имя значения перечисления чем-либо.

т. е. вы не можете использовать
dim x = enUTDSEW_Default

, даже если бы захотели, вам придется использовать:

        dim x = enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default

, что просто глупо.

0 голосов
/ 02 апреля 2013

Префикс enum, вероятно, пришел от программиста на C ++. В C ++ имя enum не является частью полного имени значения:

class Class
{
public:
    enum Enum
    {
        Value1,
        Value2
    };
};

// Yes
Class::Enum e = Class::Value1

// No
Class::Enum e = Class::Enum::Value1

но синтаксис .NET требует второй версии. Так что нет никакой пользы от избыточного имени значения.

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