【问题标题】:ID, id, or Id? [closed]身份证,身份证,还是身份证? [关闭]
【发布时间】:2009-04-23 01:13:35
【问题描述】:

我在我的代码和数据库字段名称等中使用camelCase,但是对于末尾有Id 的字段,它总是最终难以阅读。例如,itemIdteacherIdunitId 等。在这些情况下,我考虑打破常规并编写 itemID, teacherID, or unitID 只是为了提高可读性。

您是做什么的?处理此问题的一般最佳实践是什么?

【问题讨论】:

    标签: variables naming-conventions


    【解决方案1】:

    Id 是缩写,而不是首字母缩略词,所以我将其大写为“Id”。 UI 是首字母缩略词,而首字母缩略词——无论如何都是短的——大写:“UI”。

    【讨论】:

    • 最佳答案在这里;很惊讶没有人对此表示赞同。 +1 :)
    • FWIW,有些人会建议(正如 .NET Framework 设计指南所做的那样)只有两个字母的首字母缩写词完全大写,所有较长的首字母缩写词都大写为普通单词。例如,DeferIO 和 XmlReader。它接缝是一种合理且易读的方法。但是Id仍然是Id。 :)
    • FWIW ID 也是根据字典的官方缩写。我建议如果你做 Id 你也应该做 Ui 和 Url。
    • @slifty 你继续前进。 :)
    【解决方案2】:

    这是我所做的一个示例:

    id
    userId
    getUserId
    

    关键是保持一致。

    【讨论】:

      【解决方案3】:

      我做我想做的事。一般来说,你的最佳实践是倾向于可读性而不是遵守一些抽象标准。

      保持一致。

      【讨论】:

        【解决方案4】:

        我实际上更喜欢“ID”。但是,正如大家所说,一致性是最重要的。

        史蒂夫

        【讨论】:

        • 我使用“ID”,它破坏了一致性,但它更具可读性。
        • 是的,我觉得它更具可读性,这就是我使用它的原因。但如果你总是使用“ID”(例如“userID”、“commentID”),为什么会破坏一致性?
        • 他可能的意思是其余的代码是 camalCase 并且 ID 是唯一不是
        【解决方案5】:

        Id,作为标识符。 Microsoft 建议的命名约定表明这是推荐的做法,并且使用代码分析进行编译将支持这一点。 如果 ID 代表分别以 I 和 D 开头的两个单词,您将使用 ID,并且您实际上不应该使用以小写字母开头的名称,而是在参数中使用。

        【讨论】:

        • ID 代表“识别数字”。可以为任何内容创建首字母缩写词。 ;)
        • 我认为 OP 没有提到微软。
        • @MattiVirkkunen 仅供参考和举例。事实上,如果您使用 camelCase 或 PascalCase,只要您将 id 视为单个单词(即标识符),MSFT 建议的约定是一致的,这是一个合理的假设。
        • 你描述的与Microsoft's naming guidelines完全相反。
        【解决方案6】:

        没关系,只要你在整个程序中保持一致

        话虽如此,我会选择“Id”。

        【讨论】:

        • 我同意这两种说法,保持一致并使用“Id”,因为... 404
        【解决方案7】:

        我也使用驼峰式,如果名称以 Id 结尾,我也会使用它。

        【讨论】:

          【解决方案8】:

          身份证

          这是我对主观问题的主观回答。

          我已将其标记为 CW。

          【讨论】:

          • Id 的问题在于 I 看起来与非大写字母 t 相似。所以 unitId 读起来很模棱两可
          • 在这种字体中它是相似的。在使用等宽字体(我尝试在我编码的任何地方使用)时,它不会。
          • 或者小写的l。即使在等宽字体中,也可能存在问题。
          • 等宽​​字体不一定是衬线。
          【解决方案9】:

          我在所有表名中都使用下划线,所以 user_id。即使id是独立的,也是小写的。

          【讨论】:

            【解决方案10】:

            我会在这里被否决,但我不在乎!

            显然是id。来自深处的想法!

            【讨论】:

              【解决方案11】:

              发音为“eye dee”,而不是“id as in id, ego and superego”,所以是 ID,而不是 Id。无论如何,这是我的投票。由于它的发音方式,它是缩写而不是首字母缩略词的事实是无关紧要的。它的发音好像是首字母缩写词,因此也可以这样输入。哦,骆驼案是计算史上最糟糕的想法。:)

              【讨论】:

                【解决方案12】:

                数据库列和对象属性中的 ID。参数中的id:

                this.ID == id
                

                【讨论】:

                  【解决方案13】:

                  我认为可读性是最重要的,如果它要让它更容易阅读,应该覆盖你的约定。我认为如果你不能轻易阅读它,坚持你的枪/约定的弊大于利(就像我们程序员讨厌打破约定和协议一样)。

                  【讨论】:

                    【解决方案14】:

                    Machine SUIF 中,Mike Smith 和 Glenn Holloway 严格强制执行大写字母标记新单词的大小写约定。因此,即使 CPS 是首字母缩写词,它也是 transformToCps 而不是 transformToCPS。我发现,从长远来看,他们的方法比我们在 Quick C-- 中所做的更好,在 Quick C-- 中,我们通常对 ID 和 CPS 等情况使用全部大写。

                    【讨论】:

                      【解决方案15】:

                      FxCop/代码分析会将 ID 标记为错误的缩写,因此如果您想避免禁用规则,您可能会因此而遵守并使用 Id。但同样,这真的没关系,只要你是一致的,正如其他人所指出的那样。

                      【讨论】:

                        【解决方案16】:

                        只要您在自己的程序中保持一致,您就可以接受任何事情。 (如果你在一个团队中工作,你应该遵循团队的规则或设置一些)。

                        没有提到的一点是获得好字体的重要性。这将对您的程序可读性产生奇迹,并且您的约定问题可能部分是字体问题:

                        如果你不能轻易区分 Idld (Id and ld),你应该改变字体,也许还要改变字体大小。就个人而言,我喜欢康索拉斯。

                        【讨论】:

                          【解决方案17】:

                          我同意其他答案,即最重要的是保持一致。

                          我要补充一点,如果您的特定代码库没有既定标准,您应该遵循您的语言或平台设置的约定。在 Java 中,标识符的首字母缩略词和其他大写单词不大写:

                          id
                          url
                          getId()
                          setUrlParameters()
                          

                          在 Objective-C 中,情况正好相反。您可能有一个小写的“id”或“url”变量,但您也有如下类:

                          NSURL
                          NSURLRequest
                          

                          所以在 Obj-C 中我会选择一个方法名称,例如:

                          setURLParameters:
                          

                          【讨论】:

                          • C 中大写的常量看起来很丑。 PHP 也继承了其中的一些。
                          【解决方案18】:

                          我更喜欢使用 Id,在我们公司,标准也是 Id over ID。如果您发现它更易于阅读,我认为使用 ID 没有问题。编译器不在乎 :) 我在架构 Id 列中使用相同的约定。

                          【讨论】:

                            【解决方案19】:

                            不同的语言有不同的准则。对于 .NET,您可以阅读 Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries。对于 Java,您可以阅读 Code Conventions for the Java Programming Language

                            【讨论】:

                              【解决方案20】:

                              “Id”不明确。它是人类心灵“自我”/“超我”模型的一部分吗?可能不是:您可能正在尝试缩写一个词,例如“身份”或“身份”或“标识符”。

                              通过确定您的意思然后不要缩写来消除歧义(和大小写问题)。

                              【讨论】:

                                猜你喜欢
                                • 2018-12-23
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2015-02-02
                                • 2018-02-24
                                • 2015-04-29
                                • 2010-10-05
                                • 2013-10-30
                                相关资源
                                最近更新 更多