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