发布于 2026-01-06 7 阅读
0

PascalCase、下划线命名法、驼峰命名法和 PascalCase——每个程序员都应该了解的三种命名规范

PascalCase、下划线命名法、驼峰命名法和 PascalCase——每个程序员都应该了解的三种命名规范

代码中的各种标记(变量、类、函数、命名空间等)大致可以使用以下三种命名风格之一:

  1. 驼峰式命名法(例如:someVarsomeClasssomePackage.xyz)。
  2. Pascal 命名法(例如:SomeVarSomeClassSomePackage.xyz)。
  3. 下划线(例如:some_varsome_classsome_package.xyz)。

驼峰命名法中,名称以小写字母开头,但名称中的每个单词(包括缩写词)的首字母都要大写。例如,许多语言中常用的标记,如 toString、checkValidity、lineHeight、timestampToLocalDateTime 等,都是驼峰命名法的例子。

Pascal 命名法与 camel 命名法类似,区别在于第一个字母也以大写字母开头(SomeClass 而不是 someClass)。

在下划线命名法中,所有内容都使用小写字母(甚至包括缩写),单词之间用下划线分隔(例如 some_class、some_func、some_var 等)。这种命名约定也常被称为蛇形命名法

总的来说,你可以在项目中使用任何约定,只要你在所有地方都保持一致即可。但是,当你为大型项目或团队编写代码时,你应该遵循该团队使用的规范。因此,了解各种编程语言的典型约定很有帮助。

对于像 Java 或 JS 这样的 C 风格语言,通常的做法是所有变量和对象成员(属性和方法)都使用驼峰命名法,而类名和构造函数则使用帕斯卡命名法。命名空间(在 Java 中称为包)通常也使用驼峰命名法。

但有些语言例外。例如,C# 使用 PascalCase 命名空间,甚至公共方法也是如此。因此,主函数(或入口点)在 C# 中始终是static void main()Java 代码static void Main()(注意“Main”一词的首字母大写)。

有些语言的语法并非源自 C 语言(例如 Python 和 Ruby),它们除了类名之外,几乎所有内容都使用下划线。因此,Python 中总是使用 ` sys.base_prefix<class>` 而不是 `<class>` sys.basePrefixdatetime`<class>` 而不是 ` <class> DateTime`, `<class> str.splitlines()` 而不是`<class>`。str.splitLines()

就 Python 标准库而言,我注意到即使是类名有时也会使用下划线,这很不统一。例如,`class`datetime.datetime是一个类,`class` 也是一个类csv.excel_tab。然而,流行的框架和库(例如 Django 和 Flask)都使用驼峰命名法来命名类。

PHP 也存在类似的不一致之处。近年来,该语言一直在从下划线命名法演变为驼峰命名法,但一些旧的标记仍然困扰着它。例如,mysqli::set_local_infile_defaultvs PDOStatement::debugDumpParams.

所以,最终还是要看你启动项目时的个人偏好。但了解你偏好的编程语言中流行的开源项目通常遵循的惯例会有所帮助。

更新

正如@ovais指出的,还有第四种情况,即“kebab case” (卷轴式命名法)。它与下划线命名法非常相似,只是下划线被连字符(短横线)取代。例如,`a`some_func变成了`b`,some-func这显然是不允许的,因为短横线不用于命名标记,它在大多数编程语言中已经是减号运算符的内置符号。卷轴式命名法最常用于在 CSS 样式表中创建类!像 `a` main-divmain-navbar`b` 和`c` 这样的名称article-footer经常被 Web 开发人员在编写 HTML/CSS 时使用。这种命名约定本质上就是卷轴式命名法。

更新

正如@patrykrudnicki所说,常量的处理方式各不相同。根据我的经验,在包括 Java、PHP 和 Python 在内的许多语言中,使用完整的下划线 ( SOME_CONST) 是表示常量的常用约定。

更新

总而言之,这是最常用的开源编程语言中普遍遵循的典型惯例:

令牌 Python Java/JS PHP
多变的 下划线 骆驼牌 混合(趋向驼峰式命名)
功能 under_score() camelCase() 混合(趋向驼峰式命名)
持续的 下划线 下划线 下划线
班级 帕斯卡命名法 帕斯卡命名法 混合(趋向 PascalCase)
命名空间 下划线 骆驼牌 混合(趋向 PascalCase)

一些有用的链接:

  1. https://softwareengineering.stackexchange.com/questions/196416/whats-the-dominant-naming-convention-for-variables-in-php-camelcase-or-undersc
  2. https://stackoverflow.com/questions/149491/pascal-casing-or-camel-casing-for-c-sharp-code
  3. https://www.c-sharpcorner.com/forums/when-to-use-camel-case-and-pascal-case-c-sharp
  4. https://softwareengineering.stackexchange.com/questions/53498/what-is-the-philosophy-reasoning-behind-cs-pascal-casing-method-names
文章来源:https://dev.to/prahladyeri/underscores-camelcasing-and-pascalcasing-the- Three-naming-conventions-every-programmer-should-be-aware-of-3aed