不止一叶代码屋 个人技术博客 · 代码与生活的记录

读书笔记

《代码整洁之道》读书笔记(下)

错误处理

作者的态度很明确:用异常,不用返回码。

返回码的问题在于调用方可以忽略它,而编译器不会提醒你。异常可以被 try 块拦住,也不会让主流程里塞满 if (err)。

关于要不要写 try-catch,我的理解变成这样:

  • 能处理的就处理
  • 处理不了的就往上抛
  • 不要为了「看起来稳妥」写一个空的 catch

别返回 null,也别传 null

这一条我以为自己做到了,重读之后发现并没有。

// 差
public User find(int id) { return null; }

// 好
public Optional<User> find(int id) { ... }

返回 null 把「有没有」的判断责任推给了调用者,而且没有任何提示。用 Optional(或者 TS 里的 | undefined)能让类型系统帮你查。

注释的正确用法

书里有个观点我很认同:注释是失败的补偿。

能用代码表达的就用代码。注释应该用来解释为什么,而不是做什么。

// 差:说明做了什么(代码本来就说清了)
i++;  // i 加一

// 好:说明为什么
// 跳过表头行,数据从第 2 行开始
i++;

测试部分

三条规则值得抄下来:

  1. 快速:测试跑得慢,就没人跑
  2. 独立:测试之间不能有依赖
  3. 及时:写完代码就把测试补上,别等

关于 TDD,书里说得比较理想化。我自己的实践是:核心逻辑先写测试,界面和胶水代码后补。一刀切要求所有代码 TDD,反而会让人放弃。

全书读后

两本书(上、下)读下来,最大的收获不是具体规则,而是建立了一种警惕感:写代码的时候会突然意识到「这个函数是不是太长了」「这个命名是不是在骗人」。

规则是死的,这种警惕感才是能带走的。

订阅 RSS

← 返回首页