【发布时间】:2008-09-08 09:40:55
【问题描述】:
不同语言的命名约定是否相似?如果不是,有什么区别?
【问题讨论】:
标签: programming-languages naming
不同语言的命名约定是否相似?如果不是,有什么区别?
【问题讨论】:
标签: programming-languages naming
每种语言都有特定的风格。最后一个。 每个项目都采用特定的风格。至少,他们应该。这有时可能与您的语言使用的规范风格不同 - 可能基于开发领导者的偏好。
使用哪种样式?
如果您的语言附带一个好的标准库,请尝试采用该库中的约定。
如果您的语言有一本规范书籍(C 编程语言、骆驼书、Ruby 编程等),请使用它。
有时语言设计者(C#、Java 会想到)实际上会编写一堆指南。使用它们,特别是如果社区也采用它们。
如果您使用多种语言,请记住保持灵活性,并根据您使用的语言调整您喜欢的编码风格 - 在 Python 编码时使用与 C# 等编码不同的风格。
【讨论】:
正如其他人所说,情况千差万别,但这里粗略概述了各种语言中最常用的命名约定:
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)。前缀通常表示函数或变量所属的库或模块。通常保留给全局变量和全局函数。前缀也可以大写。有些约定对内部函数和变量使用小写前缀,对导出的变量使用大写前缀。
当然还有很多其他方式来命名事物,但大多数约定都是基于上面提到的一种或多种。
顺便说一句:我故意忘了提到匈牙利符号。
【讨论】:
【讨论】:
当然有一些共同的准则,但由于语言语法\设计的不同,也会有一些差异。
对于 .NET(C#、VB 等),我推荐以下资源:
【讨论】:
我认为大多数命名约定会有所不同,但开发人员会有所不同,例如我将变量命名为:mulitwordVarName,但是我合作过的一些开发人员使用了诸如 mulitword_var_name 或 multiwordvarname 或 aj5g54ag 之类的东西或...我认为这真的取决于根据您的喜好。
【讨论】:
几年前,一位聪明的老程序员教我Hungarian notation 的邪恶之处,这是一个真正的遗留系统,微软在 Windows SDK 和后来的 MFC 中采用了它。它是围绕像 C 这样的松散类型语言设计的,而不是针对像 C++ 这样的强类型语言。当时我正在使用 Borland 的 Turbo Pascal 1.0 for Windows 编写 Windows 3.0,后来成为 Delphi。
总而言之,此时我所在的团队开发了我们自己的标准,非常简单,适用于几乎所有语言,基于简单的前缀 -
这里的重点是作用域,依赖编译器来检查类型,你只需要关心作用域,数据所在的位置。与讨厌的旧匈牙利表示法相比,这有很多优点,因为如果您通过重构来更改某些内容的类型,则不必搜索和替换它的所有实例。
将近 16 年后,我仍在推广这种做法,并且发现它几乎适用于我开发的所有语言。
【讨论】: