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 实现的版本。