名称: 紧凑型代码审查最佳实践 描述: 在审查Compact合约的惯用模式、学习推荐实践或识别Midnight智能合约开发中应避免的常见错误时使用。
最佳实践技能
关于惯用Compact模式及应避免的常见错误的指导。
何时使用
此技能在查询以下内容时激活:
- 惯用的Compact代码
- 最佳实践与约定
- 常见错误
- 推荐模式
- 库的使用
触发词: 最佳实践, 惯用, 约定, 模式, 推荐, 应该, 应当
快速参考
惯用模式
| 模式 | 推荐做法 | 应避免做法 |
|---|---|---|
| 授权 | require_owner() 辅助函数 |
在每个电路中内联授权检查 |
| 常量 | 命名常量 | 魔法数字 |
| 错误处理 | 描述性断言 | 静默失败 |
| 状态访问 | 通过辅助函数控制 | 到处直接访问账本 |
| 命名 | 电路使用 动词_名词 格式 |
晦涩的缩写 |
常见错误
// ❌ 缺少语言编译指示
// 应位于每个文件的顶部
export circuit example(): [] { }
// ✅ 带有编译指示
pragma language_version >= 0.18.0;
export circuit example(): [] { }
// ❌ 未使用Counter进行计数
ledger count: Cell<Uint<64>>;
export circuit increment(): [] {
count.write(count.read() + 1);
}
// ✅ 使用Counter抽象数据类型
ledger count: Counter;
export circuit increment(): [] {
count.increment(1);
}
审查流程
1. 编译指示与导入
检查文件结构:
- 存在编译指示并指定了版本
- 导入语句在顶部(当支持时)
- 声明的逻辑顺序
2. 类型选择
验证类型是否合适:
- 计数使用Counter
- 键值对使用Map
- 成员关系使用Set
- 单一值使用Cell
- 固定大小数组使用Vector
3. 模式合规性
对照惯用法检查:
- 授权提取到辅助函数
- 常量在顶部定义
- 命名一致
- 公共接口有文档说明
参考资料
相关技能
- 代码质量 - 代码组织
- compact-core/语言参考 - 语言特性