Рекомендуется снабдить суффиксом все перечисления C# “Перечисление” для предотвращения конфликтов имен?

У меня была такая же проблема с Debian Jessie для AMD64. Я сделал это, и это работает:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386
15
задан Community 23 May 2017 в 12:34
поделиться

6 ответов

На странице MSDN для рекомендаций по именованию свойств :

Рассмотрите возможность создания свойства с тем же именем, что и его базовое имя. тип. Например, если вы объявляете свойство с именем Color, тип свойство также должно быть Color.

Я бы воспринял это как «нет» :)

Edit:

Если вам не нравится использование полного имени внутри класса, который объявляет свойство, вы можете обойти его it:

using SaveStatusEnum = MyNamespace.SaveStatus;
...
SaveStatus = SaveStatusEnum.SomeValue;

Таким образом, вы можете оставить имя перечисления без суффикса и ограничить причудливость именования только этим одним классом. :)

23
ответ дан 1 December 2019 в 00:54
поделиться

Рекомендации Microsoft по именованию .NET не дают таких рекомендаций.

Почему бы вам не давать перечислениям и свойствам одинаковые имена? Это:

public SaveStatus SaveStatus { get; set; }

отлично работает, читается, легко обнаруживается и используется.

6
ответ дан 1 December 2019 в 00:54
поделиться

Использует ли .NET Framework Enum в качестве суффикса? Вот почему я его тоже не использую.

Вместо этого я использую такие слова, как Option (или Options, если это Flags-Enum), Mode или аналогичные.

public SaveStatusMode SaveStatus { get; set; }
public SaveStatusOption SaveStatus { get; set; }
public SaveStatusVariant SaveStatus { get; set; }
6
ответ дан 1 December 2019 в 00:54
поделиться

Для некоторых типов классов используются суффиксы, например xxxException и xxxAttribute , но суффиксы широко не используются. Например, класс, реализующий IEnumerable, называется не MyListEnumerableClass , а просто MyList .

Вместо того, чтобы изобретать стандартный суффикс, загромождающий имена,

4
ответ дан 1 December 2019 в 00:54
поделиться

Если определение свойства таким образом, как у вас, безусловно, не имеет значения, совпадают ли имена или нет. Я бы сказал, что, наверное, понятнее использовать именно так.

1
ответ дан 1 December 2019 в 00:54
поделиться

Я знаю, что мое предложение противоречит соглашениям об именах .NET, но я лично префикс перечисления с помощью 'E', а флаги перечисления с помощью 'F' (аналогично тому, как мы префикс Интерфейс с "I"). Я действительно не понимаю, почему это не конвенция. Перечисления / флаги - это особый случай, подобный интерфейсам, которые никогда не меняют свой тип. Он не только проясняет, что это такое, но и очень легко вводить intellisense, поскольку префикс будет фильтровать большинство других типов / переменных / и т. Д., И у вас не будет этих конфликтов имен.

И это также решит другую проблему, когда для примеров в WPF они используют статические классы, такие как перечисления (например, FontWeights), которые имеют предварительно определенные экземпляры типов, но вы не узнаете, если не будете искать их. Если бы они просто добавили к ним префикс «E», все, что вам нужно было бы сделать, это ввести символ, чтобы найти эти специальные статические классы.

1
ответ дан 1 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: