如何命名标志集合?

Ily*_*nin 12 c# enums

例如,我有以下标志枚举:

[Flags]
public enum Colors
{
    Red = 1,
    Green = 2,
    Blue = 4
}    
Run Code Online (Sandbox Code Playgroud)

根据MS指南:

DO名称标志包含复数名词或名词短语和带有单数名词或名词短语的简单枚举.

所以我在这里使用了复数形式.现在,还有另一个指南以复数形式命名您的集合:

使用描述集合中的项目的复数短语来命名集合属性,而不是使用单个短语,后跟"列表"或"集合".

我有一个这样的课:

public class Foo
{
    public IEnumerable<Colors> Colors { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试使用该集合中的单独项目时,它会变得非常混乱 - 它们也是colors.那么我该如何命名一组标志呢?

编辑:

好的,这个例子不是很清楚,我同意.也许这个更好:

[Flags]
public enum Operations
{
    TextFormatting = 1,
    SpellChecking = 2,
    Translation = 4
}

public class TextProcessingParameters
{
    public IEnumerable<Operations> Operations { get; set; }
    // other parameters, including parameters for different operations
}
Run Code Online (Sandbox Code Playgroud)

文字处理器完成后,它有几个结果-每个operationsOperations集合(已混乱的),例如,一个用于SpellCheckingAND TextFormatting,另一个用于Translation只.

Wil*_*iam 4

虽然同意问题评论,认为有些事情不太正确,但我建议如果更仔细地选择枚举名称以反映它可以代表的每个项目的“组件”性质,那么问题似乎就会消失。

例如原来的更名:

[Flags]
public enum ColorComponents
{
    Red = 1,
    Green = 2,
    Blue = 4
}

public class Foo
{
    public IEnumerable<ColorComponents> Colors { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

更新后的示例重命名为:

[Flags]
public enum OperationComponents
{
    TextFormatting = 1,
    SpellChecking = 2,
    Translation = 4
}

public class TextProcessingParameters
{
    public IEnumerable<OperationComponents> Operations { get; set; }
    // other parameters, including parameters for different operations
}
Run Code Online (Sandbox Code Playgroud)

您还可以采取稍微不同的方法,通过重命名集合来反映集合中每个项目的组成方面:

[Flags]
public enum Operations
{
    TextFormatting = 1,
    SpellChecking = 2,
    Translation = 4
}

public class TextProcessingParameters
{
    public IEnumerable<Operations> OperationSets { get; set; }
    // other parameters, including parameters for different operations
}
Run Code Online (Sandbox Code Playgroud)

不过,第一种方法似乎稍微干净一些。