Repository navigation
03 coding checklist
omeyang edited this page Sep 16, 2026
·
1 revision
本文档提供代码提交前、Code Review、重构等场景的快速检查清单。
- 函数名见名知义(不看注释就知道干什么)
- 导出名不包含包名(避免
order.OrderQuery()) - 没有使用
manager/service/handler/util - 类型名准确描述用途
- 变量名符合 camelCase
- 缩写全大写(ID/IP/HTTP/URL)
- 模块职责单一
- 依赖接口而非具体实现
- 遵循四层架构(API -> Service -> Model -> Infrastructure)
- 没有跨层调用
- 没有循环依赖
- 函数不超过 70 行
- 参数不超过 3 个(超过使用 struct)
- 圈复杂度不超过 10
- 无重复代码(3 次及以上必须抽取)
-
golangci-lint run通过
- 单元测试覆盖率不低于 90%(核心业务不低于 95%)
- 测试通过
go test ./... - Mock 接口而非实现
- 测试数据不硬编码
- 使用
fmt.Errorf("%w", err)包装错误 - 错误携带足够上下文(ID、关键参数等)
- 对外 API 返回可读错误消息
- Error 级别记录堆栈
- Goroutine 有生命周期管理(context/errgroup)
- 共享数据有锁保护(sync.Mutex/sync.Map)
- Channel 发送方负责关闭
- 包注释包含用途说明
- 公开函数有文档注释
- 复杂逻辑有注释说明
- 功能符合需求
- 边界条件处理正确
- 错误处理完善
- 接口设计合理
- 没有过度设计
- 可扩展性好
- 代码清晰易读
- 命名见名知义
- 没有魔法数字
- golangci-lint 通过
- 测试覆盖率达标
- 输入验证完善
- 无 SQL/NoSQL 注入风险
- 敏感数据加密
- 无硬编码密码/密钥
- 无明显性能问题
- 数据库查询有索引
- 批量操作优化
- 无内存泄漏
- 旧接口保持可用
- 上游无需修改代码
- 下游无需修改代码
- 单元测试通过
- 集成测试通过
- 回归测试通过(对比新旧行为)
- 性能测试无退化
- 有灰度方案(流量切分/特性开关)
- 有监控指标(成功率/响应时间/错误率)
- 有回滚方案(配置/代码/流量)
- 有告警设置
# 代码质量检查
golangci-lint run ./...
# 圈复杂度检查
gocyclo -over 10 internal/
# 运行测试
go test ./... -v
# 测试覆盖率
go test ./... -cover
# 性能测试
go test -bench=. -benchmem
# 依赖检查
go mod tidy
go mod verify
# 安全检查
govulncheck ./...- 代码已自测通过
- 单元测试覆盖率达标
- golangci-lint 无告警
- 无高复杂度函数
- 提交信息清晰(
[类型] 简要描述) - 关联 Issue/任务单号
本页由 Maat 仓库的 scripts/sync-wiki.sh 自动生成,请勿直接编辑。