首页/开发/代码质量与评审速查/风格问题交给工具,而不是评审
代码评审64 条

风格问题交给工具,而不是评审

格式与风格应由格式化器与 lint 自动处理:评审讨论风格消耗注意力且有主观性;团队约定工具管风格,人管设计与正确性。

风格为什么交给工具

格式与风格应当由格式化器与 lint 自动处理:它们判断一致、执行成本低,而且不会因为评审者当天心情不同而变化。人的注意力应该花在设计与正确性上。团队约定「工具管风格,人管设计与正确性」之后,评审里关于括号位置、引号风格的争论会自然消失,评审信噪比明显提高。

基本信息

工具分工格式化器管排版,lint 管可自动判定的规则问题
落地方式提交钩子自动执行,CI 只做检查
人的范围设计、正确性、可读性中需要理解意图的部分
配置变更工具配置本身要评审:一改全库,影响面大

哪些交给工具

  • 缩进、换行、引号、尾随逗号、行尾空白这类纯排版问题。
  • 导入顺序与分组:交给 isort 或等价规则。
  • 命名大小写、未使用变量、可疑写法:交给 lint 规则集合。
  • 文件末尾换行、制表符与空格混用:交给格式化或编辑器配置。

哪些仍需要人

  • 可读性:变量名是否表达意图,函数是否承担多件事。
  • 结构:抽象层次是否混乱,模块边界是否合理。
  • 取舍:为可读性放弃的写法是否值得,是否有更直白的替代。
  • 一致性:与代码库既有约定是否冲突,特别是工具管不到的部分。
  • 接口与数据结构的取舍:工具只保证格式一致,不保证设计合理。

策略对比

策略结果
工具管格式、人管设计评审聚焦重点,速度快
人工检查格式注意力被消耗,标准随人波动
工具配置常改全库重排反复出现,冲突集中爆发
只有约定没有工具约定形同虚设,几乎无法长期维持
把风格从评审里移除,是提升评审信噪比成本最低的一招。
评审仍可提可读性问题,但要指向理解成本:用「读起来要跳回去看定义」替代「我不喜欢这种写法」。
工具版本升级同样要走评审:格式化行为一旦变化,全库 diff 会集中震荡。

易错点

  • 在评审里争论括号位置:同样时间不如跑一次格式化,还能获得一致结果。
  • 工具配置与团队约定不一致:本地与 CI 输出不同,diff 噪声持续不断。
  • 改了格式化配置却不同步通知:所有人下次提交都会产生大面积无关 diff。
  • 只有口头约定没有工具:约定几周内就失效,回到人工互评格式。

数据来源与参考

  • Google Engineering Practices · What to look for in a code review(风格与一致性)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌