这份 checklist 在团队里跑了两年,贴在我们的 MR 模板上。它不追求完备,只拦截那些真正烧过我们的事故。

正确性

  • 边界条件:空列表、null、超长输入、并发重复提交
  • 失败路径:第三方调用超时会怎样?重试会不会造成重复扣款?
  • 数据迁移:新旧代码混布期间,老代码读新数据会不会炸?

可读性

  • 一个函数只做一件事,超过一屏就拆开
  • 命名说出意图,而不是复述类型
  • 删掉被注释的代码——git 记得住,你不用记

工程化

  • 日志打得够排查问题,但不含敏感信息
  • 新增的外部依赖,真的值得吗?
  • 测试覆盖的是行为,不是实现细节

最后一条不成文的规定:评审意见对事不对人,但标准对所有人都一样。 可读性优先于技巧——代码是写给人看的,顺便能在机器上跑。