命名枚举类型

时间:2009-05-14 21:09:27

标签: java enums naming

如果您有一组相关的字词(例如,行和列或开启和关闭),您如何找到描述这些字词的集体词?具体来说,你如何命名枚举?

如果我有“红色”,“绿色”和“蓝色”,则合理的枚举名称可能是“颜色”。 “开”和“关”的值可能具有合理的枚举名称“Power”。但是,如何命名可以具有“行”或“列”值的枚举?


“你怎么命名一行或一列枚举?”的几个好答案? - 笛卡尔和IndexType。

如何找到一般的集体词 - 那里有没有资源,或者你只需​​要擅长英语/知道很多单词?

9 个答案:

答案 0 :(得分:9)

尝试使用表示枚举用途的名称,例如

public enum CountMethod 
{
    Row,
    Column
}

答案 1 :(得分:6)

有一个名为WordNet的软件,它基本上对复杂类层次结构中的每个英语单词进行了分类,并为其构建了软件,可以使用两个单词并返回其最早的常用超类(wordnet语言中的hypernym)。

在这种情况下,查询单词red会返回类似

的内容
red, redness
   => chromatic color, chromatic colour, spectral color, spectral colour
       => color, colour, coloring, colouring
           => visual property
               => property
                   => attribute
                       => abstraction, abstract entity
                           => entity

查询蓝色

blue, blueness
   => chromatic color, chromatic colour, spectral color, spectral colour
       => color, colour, coloring, colouring
           => visual property
               => property
                   => attribute
                       => abstraction, abstract entity
                           => entity

所以你知道,描述红色或蓝色的最准确方法是'彩色'

答案 2 :(得分:3)

对于(Row | Colum)我通常使用'IndexType'或类似的东西。正如我看到一行或多列是两个不同的索引到同一个数据结构中。

我发现自己主要使用它时,我正在编写基于表的数据结构时,它允许您编写绝大多数代码,而不管您是在行还是列上运行,只是在一系列索引中运行数据结构。然后,要执行行或列特定操作,只需使用要使用的特定索引类型调用泛型操作。

如果它的范围是一个类,那么它的效果最好

Table.IndexType or Grid.IndexType (etc.)

答案 3 :(得分:2)

我想到的第一件事是“笛卡尔”。如在

public enum Cartesian
{
   Row, Column
}

这背后的原因是因为行/列最接近建议网格系统的笛卡尔坐标。

答案 4 :(得分:2)

良好的英语词汇知识对此有所帮助,但语言中有大量的集体名词,甚至大多数母语人士都完全不知道。例如,有多少人碰巧知道乌鸦的集体名词是“谋杀”? Sting在他的歌曲“All This Time ...”中使用了这个词,顺便说一下。

我建议使用笛卡尔,原因是数学中的模拟到笛卡尔坐标。关于集体词语的辅助问题本身就很有意思,所以对于任何想要解决这个问题的人来说,这都是维基百科:

Collective Nouns from A-H

Collective Nouns from I-Z

也许有些东西可能会引发一个好的枚举名称!

答案 5 :(得分:1)

您需要一个名称来描述枚举中的各个元素。例如你的Row,Column例子或两个Cartesian元素,所以Cartesian将是一个很好的名字。如果你有一个硬件商店的部件列表作为枚举,它的一个好名字将是HardwareStoreParts等。如果你有一个像shoes, graphs, elephants, blue, pluto, Martha Stewart这样的枚举,那么你做错了。如果你不能想到这些项目的术语,或许你试图强迫枚举适合它不适合的东西。

答案 6 :(得分:1)

考虑如何使用它。您想要描述哪些属性或属性?

您所关注的术语应反映实际使用的价值观。对于API的用户来说,这应该是自然的,并且有些猜测。

例如,这些可能非常好:

widget.IndexMethod = IndexMethod.Row
widget.CountBy = CountMethod.Column

同样地,我认为Cartesian在大多数情况下都是一个糟糕的选择。笛卡尔式既不自然也不可猜测,除非你正在处理技术图形特征或其他东西。

答案 7 :(得分:1)

另一种可能性:

public enum Mapping
{
   Row, Column
}

答案 8 :(得分:1)

我尝试提出一个在实际使用枚举时最有意义的名称。取决于可能类似的上下文:

Table.ROW

或者类似的东西:

SortMode.ROW