最近读了代码整洁之道和编写可维护代码的艺术,发现这两本书的道理还是相同的,主要是下面这几点,命名,注释,逻辑,函数,格式,组织。写篇文章整合记录一下。
命名
好的命名有下面的特征
- 名副其实
- 名字与抽象层级符合
- 有表现力
- 名字带上更多信息
- 大作用域的名字使用更长的名字。
- 避免误导,类似,容易混淆的名字
- 名字的区分有意义
- 可读的/容易搜索/熟悉的名字
- 每个概念用同一个名字,如获取数据统一用fetchXXX
- 少用双关语
- 添加有意义的语境
注释
- 不要为能迅速发现的地方写注释
- 注释的作用
- 记录想法和对代码的理解
- 提供信息
- 对意图的解释
- 对不能修改,难以理解的地方的解释
- 警示,陷阱的提醒
- TODO
- 常量
- 解答读者疑问
- 好的注释
- 紧凑
- 精准
- 用输入输出来说明
逻辑
- 让控制流更易读
- length<10好于10>length,让左边变化,右边为常量10好于10>
- 先处理简单的情况,可疑的情况,正逻辑
- 使用卫语句提前结束逻辑
- 最小化嵌套
- 拆分超长表达式
- 使用解释变量代替表达式
- 使用总结变量代替一段代码
- 变量与可读性
- 减少没有价值的变量,中间过程变量,控制流变量
- 减小变量作用域
- 变量在使用前定义
- 多用不可变变量
函数
- 短小
- 只做一件事
- 不重复
- 只有一个抽象层级
- 避免多参数,如果要,包装成一个对象
- 分割查询作用的函数和指令函数
类
- 短小
- 单一权责
- 内聚
- 易修改
格式
- 一致布局
- 相关代码分组,形成代码块
- 列对齐
- 使用有意义的排序,如重要程度,先后顺序,字母顺序
- 代码分成段落
- 让代码自上而下阅读
- 意思相近的代码靠近
组织
- 抽取子问题
- 纯工具代码统一维护
- 简化已有接口
- 按需重塑接口
- 使用自然语言描述代码
- 少些代码
- 使用参数来控制需要按顺序执行的多个函数