深色模式切换
系列:软件设计的哲学 · 第 12/22 章 全书导读:00-overview.md
注释不是代码的累赘,而是抽象不可分割的一部分——没有注释,接口就不完整,读者无法在不读实现的情况下正确使用模块。
「若抽象没有文档,它就不算完整的抽象。」
第 12 章开启可读性篇(第 12–18 章)。前 11 章讲如何把模块做深;从本章起讲如何让深模块被读懂——注释是第一道桥梁,接第 13 章「写什么」、第 15 章「先写注释」。Ousterhout 在此正面回应「代码即文档」派:深模块恰恰最依赖注释来补全接口语义。
插件加载器对外只暴露 loadPlugin(path),若不注释线程亲和性与失败语义,调用方在主线程阻塞 UI 或忽略部分失败。三行接口注释比事后排查跨线程崩溃便宜得多。团队曾试行「无注释 PR 退回」,两月后新人上手时间从三周缩到十天——注释是 onboarding 成本最低的杠杆。
loadPlugin(path)
重点:每个 public 方法/类应有接口注释,说明用途、前置条件、副作用。重点:反对注释的人常把坏注释(复述代码)当作全部注释——要写的是代码说不清的。注意:注释不是推卸清晰命名的借口;好命名 + 好注释互补。注意:团队规范应要求 PR 中新增公共 API 必带注释,与测试同级。注意:内部 hack 也应有实现注释说明临时性与删除条件,避免「无注释 = 永久设计」。注意:generated 绑定代码若缺语义,在封装类接口注释中补全,勿假设读 moc 输出。
导航:第 11 章 设计两次 · 下一篇:第 13 章 注释写什么
第 12 章:为何写注释
一句话总结
注释不是代码的累赘,而是抽象不可分割的一部分——没有注释,接口就不完整,读者无法在不读实现的情况下正确使用模块。
核心观点浓缩
关键概念 / 金句
本章在全书中的位置
第 12 章开启可读性篇(第 12–18 章)。前 11 章讲如何把模块做深;从本章起讲如何让深模块被读懂——注释是第一道桥梁,接第 13 章「写什么」、第 15 章「先写注释」。Ousterhout 在此正面回应「代码即文档」派:深模块恰恰最依赖注释来补全接口语义。
个人思考与启发
插件加载器对外只暴露
loadPlugin(path),若不注释线程亲和性与失败语义,调用方在主线程阻塞 UI 或忽略部分失败。三行接口注释比事后排查跨线程崩溃便宜得多。团队曾试行「无注释 PR 退回」,两月后新人上手时间从三周缩到十天——注释是 onboarding 成本最低的杠杆。与《程序员修炼之道》对照
重点与注意
导航:第 11 章 设计两次 · 下一篇:第 13 章 注释写什么