CA1726: запрещенное слово FxCop: флаги
кто-то хочет, чтобы я сделал код других людей соответствующим набору правил FxCop, который включает правило CA1726: используйте предпочтительные условия. Большинство терминов/заменяются в порядке, и я понимаю, что нужно решить один единственный способ назвать вещи.
Однако какая сделка с термином "флаги"? Может ли кто-нибудь объяснить мне, почему я не буду использовать это имя? (прежде чем я пойду и пожалуюсь на это у моего начальника;))
Скажем, у меня есть объект данных, который имеет член класса 'flags', который связывает большое количество свойств, которые определяют, как обрабатывать объект данных. Как еще вы это называете?
Ответы
Ответ 1
В книге Framework Design Guidelines, на которой основан FxCop, авторы говорят, что использование Flag
или Flags
- плохая идея. Их альтернативное предложение состоит в том, что при перечислении имен, в которых вы используете уникальное имя для стандартных перечислений и множественное имя для битовых полей (флагов).
Например, если вы хотите создать перечисление, в котором перечислены разные видимости, вы должны называть его Visibilities
вместо VisibilityFlags
или Visibility
:
[Flags]
public enum Visibilities {
Public,
Private
}
Только те элементы, которые считаются флагами в .NET авторами, являются перечислениями битовых полей из-за ключевого слова Flags
.
Ответ 2
Я бы сказал, что свойство должно быть названо метко и что термин Flags
характеризует свойство, а не описывает его.
Флаг или флаги | Не существует замены. Не используйте.
Например, Flags
обычно используется с перечислениями (которые украшены соответствующим атрибутом), и нам, конечно, не нужно явно указывать это в имени/идентификаторе свойства:
[Flags]
enum StorageMode
{
None = 0,
Next = 1,
...
Last = 32
}
class StorableItem
{
public StorageMode StorageMode { get; set; }
}
Но в вашем случае у меня возникает ощущение, что все, что названо, или содержится в его имени, Flags
, на самом деле не является набором флагов в указанном выше смысле, что просто вызывает еще одну причину, почему чтобы избежать этого.