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. 调试
- 尽可能将错误打印出来,不要隐藏
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。