编程命名规范

发布日期:2020年12月01日本文同步发表于公众号:

Cover

编程中最难的事

对于软件开发人员来说,最大的难题是什么?答案是:如何命名(例如:给变量,类,函数和过程命名等等),如何选词是一个更大的话题,这里先不讨论,今天只讨论怎么样用单词组成标识符。

当我们绞尽脑汁想出了几个单词后,应该如何把他们连起来呢?

正常英语中,是用空格来分割单词的,但是在几乎所有编程语言中,空格都有特殊的含义,所以就出现了多种把单词连起来的方案,这里介绍最常见的四种:

  • 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,建议遵循框架的命名约定。