这份 checklist 在团队里跑了两年,贴在我们的 MR 模板上。它不追求完备,只拦截那些真正烧过我们的事故。
正确性
- 边界条件:空列表、null、超长输入、并发重复提交
- 失败路径:第三方调用超时会怎样?重试会不会造成重复扣款?
- 数据迁移:新旧代码混布期间,老代码读新数据会不会炸?
可读性
- 一个函数只做一件事,超过一屏就拆开
- 命名说出意图,而不是复述类型
- 删掉被注释的代码——git 记得住,你不用记
工程化
- 日志打得够排查问题,但不含敏感信息
- 新增的外部依赖,真的值得吗?
- 测试覆盖的是行为,不是实现细节
最后一条不成文的规定:评审意见对事不对人,但标准对所有人都一样。 可读性优先于技巧——代码是写给人看的,顺便能在机器上跑。