< p >< em >某人要求我将其他人的代码符合一些FxCop规则集,其中包括规则CA1726:使用首选术语。大多数术语/替换都可以接受,我理解必须决定一个单一的方式来命名事物。
然而,“flags”这个术语是怎么回事?有人能解释一下为什么我不应该使用这个术语吗?(在我去抱怨之前;))
比如,我有一个数据对象,它有一个成员类为“flags”,该类捆绑了大量属性,定义如何处理数据对象。你会如何称呼这个对象?
然而,“flags”这个术语是怎么回事?有人能解释一下为什么我不应该使用这个术语吗?(在我去抱怨之前;))
比如,我有一个数据对象,它有一个成员类为“flags”,该类捆绑了大量属性,定义如何处理数据对象。你会如何称呼这个对象?
在基于 FxCop 的《框架设计指南》一书中,作者认为使用 Flag
或 Flags
是不好的。他们提出了一个替代建议,即在为枚举命名时,使用单数名称表示标准枚举,使用复数名称表示位域(标志)枚举。
例如,如果您想创建一个列出不同可见性的枚举,则应将其命名为 Visibilities
而不是 VisibilityFlags
或 Visibility
:
[Flags]
public enum Visibilities {
Public,
Private
}
根据作者所说,在.NET中唯一被视为标志(flag)的项目是这些位域枚举(bitfield enumerations),因为它们带有Flags
属性关键字。
[Flags]
enum StorageMode
{
None = 0,
Next = 1,
...
Last = 32
}
class StorableItem
{
public StorageMode StorageMode { get; set; }
}
但是在你的情况下,我有一种感觉,无论是被命名为或者包含 Flags
在其名称中的东西,并不是以上意义上的一组标志 - 这也提出了另一个需要避免它的原因。