命名的艺术:从驼峰到蛇形
目次
不同编程语言往往有不同的命名约定。Java、Python、C++ 各自形成了独特的命名文化。许多重构类书籍在讲解前都会先强调命名,因为命名绝不是一件简单的事。好的命名要能准确传达含义,让人一眼就能看出变量或函数的用途。 这些命名方式的共同目标,都是为了增强可读性——让名字更像语言,而不是符号。
驼峰命名法(Camel Case) #
我最熟悉的语言是 Java,而 Java 最常见的命名方式就是驼峰命名(camel case)。
在这种方式中,单词连接处用大写字母标识,其他字母保持小写。例如 firstName。Java 中一般不会使用下划线 _ 来分隔单词。
“驼峰式大小写(Camel-Case)一词来自 Perl 语言中普遍使用的大小写混合格式,而 Larry Wall 等人所著的《Programming Perl》(O’Reilly 出版)的封面是一匹骆驼,因此得名。”
—— 维基百科 · 驼峰大小写
在 Java、Kotlin、Rust、Go、C++、Python 等语言中,成员变量和局部变量通常都会使用这种命名方式。
帕斯卡命名法(Pascal Case) #
帕斯卡命名法可以看作驼峰命名法的一种变体。不同之处在于:首字母也大写。例如 MyClass。
在 Java 和 Kotlin 中,类名、接口名、文件名通常使用帕斯卡命名法。
蛇形命名法(Snake Case) #
蛇形命名法(snake case),也称“下划线命名法”。单词之间用下划线 _ 分隔。
有两种变体:
- 全大写:常用于常量,例如
MAX_VALUE、MY_NAME。这种写法在 Java、Kotlin、Rust、Python 中都很常见,C++ 的宏定义也沿用这种风格。 - 全小写:用于变量或函数名,尤其在 Python、Rust、C 语言中广泛使用,如
file_name、get_value。
一般来说,现代主流语言不会同时混用大小写与下划线分隔——那样既冗余又影响美观。
烤串命名法(Kebab Case) #
烤串命名法(kebab case) 使用小写字母并以短横线 - 连接,例如:css-class-name。
这种命名方式在前端开发中非常常见,尤其是 CSS 的类名或 HTML 属性名中。
匈牙利命名法(Hungarian Notation) #
匈牙利命名法(Hungarian notation) 是一种历史悠久、但如今较少使用的命名方式。
在 Java 时代,仍能看到有人使用,比如 mField、sInstance。
其规则是在名称前添加小写前缀,用以标识变量的类型或用途。例如:
m表示成员变量(member)s表示静态变量(static)
根据用途不同,它分为两种:
- 系统匈牙利命名法:源自早期的 BCPL 语言。当时语言层面不区分类型,于是开发者用前缀手动标注类型。
- 应用匈牙利命名法:后来演变为用前缀表示语义用途,而非类型,如
mField表示“成员字段”。
虽然这种方式在现代语言中已不再主流,但在老项目、甚至部分 Android 代码中依然能见到其痕迹。
小结 #
无论是驼峰、蛇形还是烤串,这些命名方式的核心目标始终一致——让代码更易读、更易懂。 命名不仅是语法规则,更是沟通的语言。它连接着人和代码,也反映着语言设计的美学。
参考资料: