gpt4 book ai didi

c# - 如何命名一组旗帜?

转载 作者:可可西里 更新时间:2023-11-01 08:27:56 25 4
gpt4 key购买 nike

例如我有以下标志枚举:

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

根据 MS Guidelines :

DO name flag enums with plural nouns or noun phrases and simple enums with singular nouns or noun phrases.

所以我在这里使用了复数形式。现在,有 another guideline以复数形式命名您的收藏:

DO name collection properties with a plural phrase describing the items in the collection instead of using a singular phrase followed by "List" or "Collection."

我有这样一个类:

public class Foo
{
public IEnumerable<Colors> Colors { get; set; }
}

问题是当我尝试处理该集合中的单独项目时它变得非常困惑 - 它们也是颜色。那么我应该如何命名一组标志呢?

编辑:

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

[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
}

文本处理器完成后,它有几个结果 - Operations 集合中的每个 operations 一个结果(已经令人困惑),例如一个用于 SpellCheckingTextFormatting,另一个仅用于 Translation

最佳答案

虽然同意问题评论认为有些事情不太对劲,但我建议如果更仔细地选择枚举名称以反射(reflect)它可以代表的每个项目的“组件”性质,问题似乎就解决了离开。

比如原来的改名:

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

public class Foo
{
public IEnumerable<ColorComponents> Colors { get; set; }
}

更新后的示例重命名为:

[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
}

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

[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
}

不过,第一种方法似乎更简洁一些。

关于c# - 如何命名一组旗帜?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29657505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com