提纲
整洁代码
有意义的命名
格式
注释
函数
类
对象和数据结构
错误处理
边界
测试
整洁代码
- 统一风格
- 不要重复整洁代码
有意义的命名
- 名副其实
- 做有意义的区分
- 对功能类似的变量名采用统一的命名风格
- 使用解决方案领域名称
格式
-
格式是美观的充分条件
-
遵守团队规则
-
例如:
- 大小写一致
- 调用函数的函数和被调函数应放在较近的位置
- 对存在一定业务逻辑复杂性的代码进行注释
- 不要在代码库中遗留被注释掉的代码
注释
- 注释不能美化糟糕的代码
- 用代码来阐释
- 好注释
- 基础数据的注释
- 提供信息的注释
- 对意图的注释
- Todo注释 *不要有冗余注释
函数
-
短小
- 每行150个字符
- 每个函数20行 *只做一件事 *不要有匿名函数
-
函数参数
- 零到三个,最好没有
-
别重复自己
- 移除重复的代码
-
无副作用
- 当函数产生了除了“接受一个值并返回一个结果”之外的行为时,称该函数产生了副作用。
- 少用输出参数
- 不要使用标记(Flag)作为函数参数
-
使用异常替代返回错误码
-
抽离try catch代码块
-
不要写全局函数
-
封装判断条件
-
避免“否定情况”的判断
-
避免条件判断
-
避免类型判断
-
删除无效的代码
-
如何写出好的函数
- 先实现,然后优化
类
- 单一职责原则 (SRP)
- 开/闭原则 (OCP)
- 指的是我们应允许用户方便的扩展我们代码模块的功能,而不需要打开 js 文件源码手动对其进行修改。
- 利斯科夫替代原则 (LSP)
- 子类对象应该能够替换其超类对象被使用
- 接口隔离原则 (ISP)
- 不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
对象和数据结构
- 边界要清晰
- 对象暴露行为,隐藏数据
- 数据结构暴露数据,没有明显行为
错误处理
- 使用异常而非返回码
- 给出异常发生的环境说明
- 将错误处理独立于主逻辑之外
错误处理
- 分离已知和未知边界
- 使用尚不存在的代码
- 保持边界整洁
测试
- 单一的测试每个概念
- 测试全面
- 别略过小测试
- 被忽略的测试就是对不确定事物的疑问
- 全面测试相近的缺陷
- 快速
参考资料
- 《Clean Code-代码整洁之道》
- github.com/alivebao/cl…