【问题标题】:What are the preferred conventions in naming attributes, methods and classes in different languages?在不同语言中命名属性、方法和类的首选约定是什么?
【发布时间】:2008-09-08 09:40:55
【问题描述】:

不同语言的命名约定是否相似?如果不是,有什么区别?

【问题讨论】:

    标签: programming-languages naming


    【解决方案1】:

    每种语言都有特定的风格。最后一个。 每个项目都采用特定的风格。至少,他们应该。这有时可能与您的语言使用的规范风格不同 - 可能基于开发领导者的偏好。

    使用哪种样式?

    如果您的语言附带一个好的标准库,请尝试采用该库中的约定。

    如果您的语言有一本规范书籍(C 编程语言、骆驼书、Ruby 编程等),请使用它。

    有时语言设计者(C#、Java 会想到)实际上会编写一堆指南。使用它们,特别是如果社区也采用它们。

    如果您使用多种语言,请记住保持灵活性,并根据您使用的语言调整您喜欢的编码风格 - 在 Python 编码时使用与 C# 等编码不同的风格。

    【讨论】:

      【解决方案2】:

      正如其他人所说,情况千差万别,但这里粗略概述了各种语言中最常用的命名约定:

      lowercase, lowercase_with_underscores:

      常用于局部变量和函数名(典型的 C 语法)。

      UPPERCASE, UPPERCASE_WITH_UNDERSCORES:

      常用于永不改变的常量和变量。一些(较旧的)语言(如 BASIC)也有一个约定,所有变量名都使用大写。

      CamelCase, javaCamelCase:

      通常用于函数名和变量名。有些人仅将它用于函数并将其与小写或小写_with_underscores 组合用于变量。当使用 javaCamelCase 时,它​​通常用于函数和变量。

      这种语法对于外部 API 也很常见,因为 Win32 和 Java API 就是这样做的。 (即使库在内部使用不同的约定,它们通常使用 (java)CamelCase 语法导出函数名称。)

      prefix_CamelCase, prefix_lowercase, prefix_lowercase_with_underscores:

      常用于不支持命名空间的语言(即 C)。前缀通常表示函数或变量所属的库或模块。通常保留给全局变量和全局函数。前缀也可以大写。有些约定对内部函数和变量使用小写前缀,对导出的变量使用大写前缀。

      当然还有很多其他方式来命名事物,但大多数约定都是基于上面提到的一种或多种。

      顺便说一句:我故意忘了提到匈牙利符号。

      【讨论】:

      • ThisIsPascalCase,thisIsCamelCase。从未听说过 javaCamelCase
      【解决方案3】:

      生日,

      我能提出的最佳建议之一是阅读 Steve McConnell 的 Code Complete (Amazon Link) 的相关部分。他对命名技术进行了精彩的讨论。

      HTH

      干杯,

      罗伯

      【讨论】:

        【解决方案4】:

        当然有一些共同的准则,但由于语言语法\设计的不同,也会有一些差异。

        对于 .NET(C#、VB 等),我推荐以下资源:

        【讨论】:

          【解决方案5】:

          我认为大多数命名约定会有所不同,但开发人员会有所不同,例如我将变量命名为:mulitwordVarName,但是我合作过的一些开发人员使用了诸如 mulitword_var_name 或 multiwordvarname 或 aj5g54ag 之类的东西或...我认为这真的取决于根据您的喜好。

          【讨论】:

            【解决方案6】:

            几年前,一位聪明的老程序员教我Hungarian notation 的邪恶之处,这是一个真正的遗留系统,微软在 Windows SDK 和后来的 MFC 中采用了它。它是围绕像 C 这样的松散类型语言设计的,而不是针对像 C++ 这样的强类型语言。当时我正在使用 Borland 的 Turbo Pascal 1.0 for Windows 编写 Windows 3.0,后来成为 Delphi。

            总而言之,此时我所在的团队开发了我们自己的标准,非常简单,适用于几乎所有语言,基于简单的前缀 -

            • a - 参数
            • l - 本地
            • m - 成员
            • g - 全球

            这里的重点是作用域,依赖编译器来检查类型,你只需要关心作用域,数据所在的位置。与讨厌的旧匈牙利表示法相比,这有很多优点,因为如果您通过重构来更改某些内容的类型,则不必搜索和替换它的所有实例。

            将近 16 年后,我仍在推广这种做法,并且发现它几乎适用于我开发的所有语言。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-01-11
              • 1970-01-01
              • 1970-01-01
              • 2016-12-07
              • 2020-06-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多