笔记 编写可读性代码的艺术

1. 代码应当易于理解

  • 唯一标准:让别人理解的时间最小

2. 把信息装到名字里

  • 选择专业的词
  • 避免泛泛的名字
  • 使用具体的名字代替抽象的名字
  • 为名字携带更多的信息
  • 名字的作用域越大,最好名字越长
  • 丢掉没用的词
单词 更多选择
send deliver, dispatch, announce, distribute,route
find search, extract, locate, recover
start launch, create, begin, open
make create, set up, build, generate, compose, add ,new

3. 审美

我之前学设计的时候看过一本书,写给大家看的设计书(第3版)将这本书中的设计审美原理应用到写代码上,真实十分贴切,如果你读过此书,你的审美能力会大幅提高。

  • 对齐
  • 重复
  • 对比
  • 亲密性 按照亲密关系分段
  • 顺序

4. 写什么样的注释

  • 不要写一眼就能看懂的注释,类似于此地无银三百两
  • 与其写注释,不如把变量名函数名写好,可以从名字中理解
  • 记录你的思想
  • 加入评论
  • 指出哪里有陷阱,需要注意
  • 言简意赅,不要啰嗦
  • 不要使用不明确的代词,不要像像算命先生,如何解释都对

5. 可读性控制流

  • 追求最小理解时间,而不是最少代码行
  • 尽可能提前return结果
  • 少点嵌套,要尽可能扁平化
  • 理解执行流程。有些是连续执行。有些是随时都可能执行,像事件回调
  • 避免使用while, 一般我们循环都是为了遍历数组,为什么不用forEach呢?

6. 拆分超长表达式

  • 拆分超长的表达式
  • 拆分巨大的语句
  • 尽量把逻辑包裹在函数中,不要重复你自己 DRY

7. 变量与可读性

  • 减少变量,变量越少越好
  • 减少中间结果,垂直消费
  • 减少用于控制流的变量
  • 缩小变量的作用域
  • 用到变量再定义,不要提前定义,不然还要随时想着,之前定义的变量是用干嘛的呢?

8. 重构

  • 抽取不相关的自子问题
  • 抽取各种配置性的变量在一起,他们都是配置
  • 尽量写纯函数
  • 创建大量通用代码
  • 打造自己的武器装备库
  • 简化接口传参
  • 过犹不及,不要太苛刻

9. 一次只做一件事

10. 少写代码

  • 最好的代码就是没有代码
  • 别费神实现那个功能,你不会需要的
  • 质疑和拆分的需求
  • 保持小代码库
  • 删除没用的代码
  • 删除没有的注释

11. 调试

  • 尽可能将错误打印出来,不要隐藏