toc
编程中最难的事
对于软件开发人员来说,最大的难题是什么?答案是:如何命名(例如:给变量,类,函数和过程命名等等),如何选词是一个更大的话题,这里先不讨论,今天只讨论怎么样用单词组成标识符。
当我们绞尽脑汁想出了几个单词后,应该如何把他们连起来呢?
正常英语中,是用空格来分割单词的,但是在几乎所有编程语言中,空格都有特殊的含义,所以就出现了多种把单词连起来的方案,这里介绍最常见的四种:
- PascalCase
- snake_case
- camelCase
- kebab-case
每种规范都会对原始单词进行统一处理:字母转化为小写,去掉空格。假设原始单词是 Hello world
,下面是几种规范的处理方式:
PascalCase
将每个单词的首字母转换为大写,并将多个单词直接连接在一起。变为:HelloWorld
。
常用的场景:
- Java:类型名。例如:
FileNotFoundException
。
snake_case
使用 _
连接多个单词。变为:hello_world
。
常用的场景:
- C:结构体名,函数名。例如
static void set_blame_suspects(struct commit *commit, struct blame_origin *origin);
,其中set_blame_suspects
是函数名,blame_origin
是结构体名。 - Dart:库名,例如
url_launcher
。 - Go:源文件名,例如
approve_service.go
。 - Rust:函数名,例如
fs::read_to_string
。
还有一种情况是全部大写的 SNAKE_CASE
,常用在各种编程语言中表示常量。
camelCase
类似 PascalCase
,不过将第一个单词的首字母保持小写。变为:helloWorld
。
常用的场景:
- Java:字段名,方法名,变量名。例如:
Collections.emptyList()
,其中Collections
是类名,emptyList
是方法名,ArrayList.elementData
,其中ArrayList
是类名,elementData
是字段名。
kebab-case
使用 -
连接多个单词。变为:hello-world
。
常用的场景:
- Java:jar 包的命名,例如
spring-boot-2.4.0.jar
。 - URL:在 URL 中,
?
之前的部分不要出现大写字母,使用-
连接多个单词。例如:https://www.jitao.tech/blog/2020/12/programming-case-styles/
,在搜索引擎中,把-
当做空格处理。使用-
是对搜索引擎友好的写法。
总结
以上例举的场景只是一般的情况,当你项目基于某个框架(不是库)开发的时候,例如 Spring Framework
,建议遵循框架的命名约定。