rust-guide命名规范速查:用UpperCamelCase和snake_case写出可审计的安全代码
【免费下载链接】rust-guideRecommendations for secure applications development with Rust项目地址: https://gitcode.com/gh_mirrors/ru/rust-guide
rust-guide是法国国家网络安全局(ANSSI)发布的 Rust 安全应用开发指南,其中"命名规范"章节是保障代码可审计性的第一道防线:统一的UpperCamelCase和snake_case让读者与审计员一眼就能分清类型、函数和常量,从而快速发现被刻意隐藏的unsafe或可疑转换。
为什么命名是安全代码的第一道防线
对安全软件来说,代码不只是给编译器看的,更是给人类审计员看的。混乱的命名会带来两个真实风险:
- 🕵️误读风险:一个看起来像常量的全局变量,实际却是可变的
static mut,审查者可能错过它的并发隐患; - 🚪绕过风险:审计
unsafe块时,统一的命名风格让你能迅速定位"谁在做转换、谁在操作指针"。
指南将"遵守命名规范"列为**必须(MUST)**级别的规则,理由正是:清晰即安全。
四大核心命名规则速查表
Rust 标准库就是事实上的命名标杆,基础规则(C-CASE)只有四条,背下来即可:
| 命名风格 | 适用对象 | 例子 |
|---|---|---|
UpperCamelCase | 类型、trait、枚举变体、泛型类型参数 | HttpRequest、MyEnum::Variant |
snake_case | 函数、方法、宏、变量、模块 | parse_header、user_id |
SCREAMING_SNAKE_CASE | 静态变量、常量、泛型常量参数 | MAX_RETRY_COUNT、BUFFER_SIZE |
'小写 | 生命周期 | 'a、'lifetime(尽量用单字母) |
💡 记忆口诀:"类型大写驼峰,函数变量下划线,常量全大写,生命周期打引号"。
高频场景的长尾命名约定
基础规则之外,Rust API Guidelines 还规定了若干细粒度约定,它们是日常写库、做代码审查时最常被问到的部分:
(C-CONV)转换方法:按as_(零成本、不消费)、to_(分配新内存)、into_(消费自身)区分,例如as_str、to_string、into_vec;(C-GETTER)取值方法:优先直接读字段或&self方法,避免多余的get_前缀;(C-ITER)迭代器方法:统一用iter、iter_mut、into_iter三件套;(C-ITER-TY)迭代器类型:类型名与产生它的方法对应,iter()产生Iter;(C-FEATURE)功能开关:cargo feature 命名不含placeholder、new这类占位词;(C-WORD-ORDER)词序一致性:同一概念在全项目中保持相同词序(如都用byte_buffer,不要混用buffer_byte)。
让编译器与 Clippy 替你把关
好消息是:规范不必靠自觉,工具链会强制检查。
- 🛡️编译器内置检查:基础规则
(C-CASE)由nonstandard_stylelint 组直接检查——命名写错,编译时就会收到警告; - 🔍Clippy 风格检查:
clippy工具的style类 lint 能进一步检查命名一致性,例如wrong_self_convention会核对as_/to_/into_前缀与接收者(self/&self/&mut self)是否匹配; - 🎨rustfmt 统一格式:指南同样建议(SHOULD)使用
rustfmt保证整个代码库风格一致,可用项目根目录的rustfmt.toml自定义规则。
指南对此有两条硬规则:开发期间必须定期运行 linter;任何自动修复(clippy fix、cargo fix)都必须由开发者人工复核后再提交。
去哪里看完整规则
本项目的规范章节位于 src/en/naming.md,中文开发者可对照法语版 src/fr/naming.md;关于 Clippy 与 rustfmt 的使用建议,见开发环境章节 src/en/devenv.md。项目目录结构如下:
rust-guide/ ├── src/en/naming.md # 命名规范(英文主版本) ├── src/fr/naming.md # 命名规范(法语版) ├── src/en/devenv.md # rustfmt / clippy 工具使用建议 └── examples/ # 配套示例代码一分钟自检清单
提交前花一分钟过一遍,审计效率立刻提升:
- 类型与 trait 都是
UpperCamelCase吗? - 函数、变量、模块都是
snake_case吗? - 常量与
static都是SCREAMING_SNAKE_CASE吗? as_/to_/into_前缀与接收者匹配吗?cargo clippy无风格类警告吗?
✅ 按 rust-guide 执行这五条检查,你的代码不仅更符合 Rust 生态惯例,更能让安全审计像"顺藤摸瓜"一样顺滑——命名规范,就是最廉价的安全投资。
【免费下载链接】rust-guideRecommendations for secure applications development with Rust项目地址: https://gitcode.com/gh_mirrors/ru/rust-guide
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考