G.NAM.01 应使用统一的命名风格
【级别】 建议
【描述】
应在代码中遵循统一的 Rust 命名风格。
- 通常在 类型、trait、枚举体 等语言项使用大驼峰(
UpperCamelCase) 命名风格,在 变量名、函 数名 等语言项使用蛇形(snake_case)命名风格。 - 为 Cargo Feature 命名应该避免出现:
no-或not-之类的否定前缀;use-或with-之类的多余前缀;-support之类的多余后缀。
【说明】
下面是汇总信息:
| Item | 规范 |
|---|---|
| 包(Crates) | 通常使用 snake_case |
| 模块(Modules) | snake_case |
| 类型(Types) | UpperCamelCase |
| Trait | UpperCamelCase |
| 枚举体 | UpperCamelCase |
| 枚举体成员(Enum variants) | UpperCamelCase |
| 结构体(Structs) | UpperCamelCase |
| 结构体/联合体成员 | snake_case |
| 函数(Functions) | snake_case |
| 方法(Methods) | snake_case |
| 通用构造函数(General constructors) | new 或者 with_more_details |
| 转换构造函数(Conversion constructors) | from_some_other_type |
| 宏(Macros) | snake_case |
| 本地变量(Local variables) | snake_case |
| 静态变量(Statics) | SCREAMING_SNAKE_CASE |
| 常量(Constants) | SCREAMING_SNAKE_CASE |
| 类型参数(Type parameters) | 简明的 UpperCamelCase ,通常使用单个大写字母: T |
| 生存期(Lifetimes) | 简短的 lowercase ,通常使用单个小写字母 'a , 'de , 'src , 尽量保持语义 |
| 特性(Features) | snake_case |
补充解释:
UpperCamelCase: 每个单词的首字母都是大写的,其余部分小写,没有分隔符。由首字母缩写组 成的缩略语和复合词的缩写,算作单个词。比如,应该使用Uuid而非UUID,使用Stdin而不 是StdIn。snake_case: 每个单词都是小写的,使用下划线作为分隔符, 如is_xid_start。SCREAMING_SNAKE_CASE: 每个单词都是大写的,使用下划线作为分隔符。在
snake_case或者SCREAMING_SNAKE_CASE情况下,每个词不应该由单个字母组成——除非这 个字母是最后一个词。比如,使用btree_map而不使用b_tree_map,使用PI_2而不使用PI2。通用构造函数的
with_more_details形式是指推荐用户使用如: with_capacity , with_file_name 等函数名。转换构造函数的
from_some_other_type形式是指推荐用户使用如:from_bytes,from_str,from_array等函数名。
关于包命名:
- 由于历史问题,包名有两种形式
snake_case或kebab-case,但实际在代码中需要引入包名的时 候, Rust 只能识别snake_case,也会自动将kebab-case识别为kebab_case。所以建议使用snake_case。 - Crate 的名称通常不应该使用
-rs或者-rust作为后缀或者前缀。但是有些情况下,比如是其他 语言移植的同名 Rust 实现,则可以使用-rs后缀来表明这是 Rust 实现的版本。
