【问题标题】:Naming enum types命名枚举类型
【发布时间】:2009-05-14 21:09:26
【问题描述】:

如果您有一组相关的词(例如 Row & Column 或 On & Off),您如何找到描述这些词的集合词?具体来说,如何命名枚举?

如果我有“Red”、“Green”和“Blue”,一个合理的枚举名称可能是“Color”。 “On”和“Off”的值可能有一个合理的枚举名称“Power”。但是如何命名可以具有“行”或“列”值的枚举?


关于“你如何命名行或列枚举?”的几个很好的答案。 - 笛卡尔和索引类型。

一般来说,寻找集体词怎么样 - 是否有任何资源,或者你只需​​要擅长英语/知道很多词?

【问题讨论】:

    标签: java enums naming


    【解决方案1】:

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

    public enum CountMethod 
    {
        Row,
        Column
    }
    

    【讨论】:

    • 你怎么知道它会被计算在内?
    • 重点是给出一个可以使用这个枚举的例子。如果您需要行或列来指定用户如何查看他的数据,它可以是 ViewMode 枚举。
    • 按照颜色示例,您可以将其命名为 PrintColors、ScreenColors、Palette 等。
    【解决方案2】:

    有一个名为 WordNet 的软件,它基本上将每个英语单词分类到一个复杂的类层次结构中,并为它构建了一个软件,它可以接收两个单词并返回它们最早的公共超类(wordnet 语言中的上位词)。

    在这种情况下,查询 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
    

    所以你知道,描述红色或蓝色最准确的方式是“彩色”

    【讨论】:

    • 光滑!感谢您发布!
    【解决方案3】:

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

    我发现自己主要在编写基于表的数据结构时使用它数据结构。然后,要执行特定于行或列的操作,您只需使用要使用的特定索引类型调用通用操作。

    如果它被限定为一个类,那么它的效果最好,这样它就是

    Table.IndexType or Grid.IndexType (etc.)
    

    【讨论】:

      【解决方案4】:

      我首先想到的是“笛卡尔”。如

      public enum Cartesian
      {
         Row, Column
      }
      

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

      【讨论】:

        【解决方案5】:

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

        我最初建议笛卡尔坐标系是因为数学中类似于笛卡尔坐标系。辅助问题,关于集体词的问题,本身就很有趣,所以为了任何可能想要了解这个范围的人的利益,来自维基百科:

        Collective Nouns from A-H

        Collective Nouns from I-Z

        也许有什么东西可以触发一个好的枚举名称!

        【讨论】:

        • 每个人都知道谋杀乌鸦。这是小古巴古丁电影的片名。
        • “所有人”当然不知道这一点。我不知道小古巴古丁出现在同名电影中。甚至可能有些人甚至不知道小古巴古丁是谁。
        【解决方案6】:

        您需要一个描述枚举中各个元素的名称。例如,您的 Row、Column 示例或两个笛卡尔元素,因此笛卡尔将是一个不错的名称。如果您有一个硬件商店的零件列表作为枚举,那么它的好名称将是 HardwareStoreParts 等。如果您有一个诸如 shoes, graphs, elephants, blue, pluto, Martha Stewart 之类的枚举,那么您做错了什么。如果您想不出项目的术语,也许您正试图强制枚举适合它不适合的东西。

        【讨论】:

          【解决方案7】:

          另一种可能性:

          public enum Mapping
          {
             Row, Column
          }
          

          【讨论】:

            【解决方案8】:

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

            您选择的术语应该反映这些值的实际使用情况。对于 API 的用户来说,它应该是自然的,并且在某种程度上是可以猜测的。

            例如,这些可能还不错:

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

            按照同样的思路,我认为Cartesian 在大多数情况下都是一个糟糕的选择。笛卡尔既不自然也不可猜测,除非您处理的是技术图形功能或其他东西。

            【讨论】:

            • 诚然,笛卡尔对某些人来说可能有点太神秘了(他们中的许多人早就忘记了他们在代数 101 中学到的一切)。我确实倾向于考虑行/列 meme 趋向于哪种网格。
            • 我主要是从使用 API 的角度出发,而不仅仅是设计它。笛卡尔似乎非常适合描述行/列,但它在某种程度上是另一个方向的精神飞跃。不过,智能感知和智能 IDE 之类的东西可能并不重要。
            【解决方案9】:

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

            Table.ROW
            

            或者一些相当不同的东西,比如:

            SortMode.ROW
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-08-17
              • 1970-01-01
              • 1970-01-01
              • 2010-10-03
              • 2021-06-29
              相关资源
              最近更新 更多