CA1726: Запрещенное слово FxCop: флаги - PullRequest
13 голосов
/ 20 апреля 2011

кто-то хочет, чтобы я сделал код других людей совместимым с некоторым набором правил FxCop, который включает в себя правило CA1726: используйте предпочтительные термины . С большинством терминов / замен все в порядке, и я могу понять, что нужно выбрать один единственный способ назвать вещи.

Однако, как обстоят дела с термином «флаги»? Может кто-нибудь объяснить мне, почему я не буду использовать это имя? (прежде чем я пойду и пожалуюсь на это у моего босса;))

Скажем, у меня есть объект данных, который имеет член класса 'flags', который объединяет большое количество свойств, которые определяют, как обрабатывать объект данных. Как еще вы бы назвали это?

Ответы [ 2 ]

12 голосов
/ 20 апреля 2011

В книге Руководство по разработке фреймворка , на которой основан FxCop, авторы говорят, что использование Flag или Flags - плохая идея. Их альтернативное предложение состоит в том, чтобы при именовании перечислений вы использовали единственное имя для стандартных перечислений и множественное имя для перечислений битовых полей (флагов).

Например, если вы хотите создать перечисление, в котором перечислены разные видимости, вы бы назвали его Visibilities вместо VisibilityFlags или Visibility:

[Flags]
public enum Visibilities {
   Public,
   Private
}

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

3 голосов
/ 20 апреля 2011

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

Флаг или Флаги | Там нет замены срок. Не используйте.

Например, Flags обычно используется с перечислениями (которые украшены соответствующим атрибутом), и нам, конечно, не нужно явно указывать это в имени / идентификаторе свойства:

[Flags]
enum StorageMode
{
    None = 0,
    Next = 1,
    ...
    Last = 32
}

class StorableItem
{
    public StorageMode StorageMode { get; set; }
}

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

...