知识卡片

编译器报错比代码审查反馈更省成本

普通读书笔记卡 · 1457

内容

同样是发现”这段代码使用了不安全的API”,编译器当场报错和提交审查时才被指出,修复成本天差地别——审查时代码已写完并能跑,这时才被要求重构会让开发者沮丧;编译期报错时开发者对上下文记忆最新鲜,能快速处理。这提示把安全检查往左移到编译期(用类型系统或Error Prone、Tsetse这类插件强制),比依赖事后人工审查更有效,是反馈时机决定了修复的心理成本和质量。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第12章《编写代码》12.2.2节(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_099.html`) - 结论依据:原文明确指出"编译器抛出的错误是一种及时且可操作的反馈方式。以可选加入方式运行的工具(如各类linter)或在代码审查时提供的反馈会滞后得多",并说明提交审查时代码已是能运作的单元,此时才需重构会让人沮丧,而编译期开发者有完整上下文更容易调整。 - 原始内容:根据我们的经验,编译器抛出的错误是一种及时且可操作的反馈方式……当提交审查时,开发人员手中的代码通常已经完工,并且是能运作的单元。如果在开发流程的后期,发现自己需要进行一些重构才能使用严格定义类型的API,你可能会感到非常沮丧。