Racket 命名风格指南
📌 基础命名约定
| 形式/后缀 | 示例 | 含义 / 用途 | 
|---|---|---|
xxx% | 
frame%, editor% | 
类(class) | 
xxx<%> | 
editor<%>, canvas<%> | 
接口协议(interface/protocol) | 
xxx-mixin | 
editor-mixin, text-mixin | 
类混入(mixin) | 
xxx? | 
string?, number? | 
谓词函数(判断返回布尔值) | 
xxx! | 
set!, vector-set! | 
副作用函数(修改状态) | 
xxx->yyy | 
symbol->string | 
类型转换函数 | 
make-xxx | 
make-hash, make-parameter | 
构造函数 | 
define/xxx | 
define/public, define/contract | 
带修饰器的定义(类、模块中) | 
with-xxx | 
with-output-to-string | 
作用域控制函数(自动管理资源) | 
call-with-xxx | 
call-with-input-file | 
资源操作 + 回调 | 
send / send* | 
(send obj method ...) | 
对象方法调用(类系统) | 
parameterize | 
— | 临时参数绑定上下文 | 
🔤 命名风格
- 小写 + 连字符(kebab-case)
- ✅ 
string-append - ✅ 
file-or-directory-modify-seconds - ❌ 不用 camelCase(除非自己定义)
 
 - ✅ 
 
📦 模块/目录命名
| 命名 | 说明 | 
|---|---|
private/ | 
私有模块,不建议直接 require | 
main.rkt | 
包或库的默认入口点 | 
lang/ | 
自定义语言定义路径 | 
info.rkt | 
包元信息(依赖、版本等) | 
🧰 常见工具函数命名(标准库)
| 函数名 | 说明 | 
|---|---|
for/list | 
生成列表的 for 循环 | 
define-values | 
同时定义多个值 | 
syntax-case | 
宏展开的基本构件 | 
hash-ref, hash-set! | 
哈希表访问/修改 | 
🧪 命名直觉对照速查
| 看到名字 | 大概率表示 | 
|---|---|
结尾是 % | 
类(class) | 
包含 <%> | 
接口(interface) | 
结尾是 ? | 
判断函数(predicate) | 
结尾是 ! | 
有副作用的操作 | 
包含 -> | 
类型转换 | 
开头是 with- | 
控制作用域、临时绑定 | 
开头是 call-with- | 
使用资源 + 自动清理 | 
开头是 make- | 
构造函数 | 
使用 define/public | 
类中公开方法 |