代码整洁之道
Tue, 07 Jul 2015 13:45:37 +0000
[美]Robert C. Martin 《代码整洁之道》 阅读笔记
你是个程序员,你想成为更好的程序员。
整洁代码
整洁代码就像绘画一样。整洁的代码如同优美的散文。干净利落的抽象。
简单代码的规则
- 能通过所有测试
- 没有重复代码
- 体现系统中的全部设计理念
- 包括尽量少的实体,比如类、方法、函数等。
消除重复和提高表达力。
有意义的命名
做有意义的区分,废话都是冗余,使用读得出来的名称, 使用可搜索的名称,避免使用编码,避免思维映射,类名,方法名,别扮可爱,每个概念对应一个词,别用双关语,使用解决方案领域名称,使用源自所涉问题领域的名称,添加有意义的语境,不要添加没用的语境。
目的:提高代码可读性。
函数
短小、只做一件事、每个函数一个抽象层级、switch 语句、使用描述性的名称、函数参数、无副作用、分隔指令与询问、使用异常替代返回错误码、别重复自己、结构化编程。
注释
- 不能美化糟糕的代码
- 用代码来阐述
- 阐述
- 坏注释:喃喃自语、多余、误导性、循规式、日志式、废话、可怕、能用函数或变量就不该用注释、位置标记、括号后面的、归属与署名、注释掉的代码、HTML 注释、非本地信息、信息过多、不明显的联系、函数头、非公共代码中的 Javadoc、范例
格式
保持良好的代码格式,选用一套简单规则并贯彻之。
- 垂直格式
- 团队规则
- 格式规则
对象和数据结构
- 数据抽象
- 数据、对象的反对称性
- 德墨忒尔率
- 数据传送对象
错误处理
- 使用异常而非返回码
- 先写 Try-Catch-Finally 语句
- 使用不可控异常
- 给出异常发生的环境说明
- 依调用者需要定义异常类
- 定义常规流程
- 别返回 null 值
- 别传递 null 值
边界
- 使用第三方代码
- 浏览和学习边界
- 学习性测试的好处不只是免费
- 使用尚不存在的代码
- 整洁的边界
单元测试
测试驱动,单元测试。
- TDD
- 保持整洁
- 整洁的测试
- 每个测试一个断言
- F.I.R.S.T
类
- 类的组织
- 短小
- 为了修改而组织
系统
- 将系统与构造使用分开
- 扩容
- 代理
- 框架
- 测试驱动系统架构
- 优化决策
- 明智使用添加了可论证价值的标准
- 系统需要领域特定语言
迭进
- 通过迭进设计达到整洁的目的
- 运行所有测试
- 重构
- 不可重复
- 表达力
- 尽可能少的类和方法
并发编程
挑战、防御原则、执行模型、警惕同步方法之间的依赖、保持同步区域微小、很难编写正确的关闭代码、测试线程代码。
逐步改进
JUnit 内幕
- 框架
重构 SerialDate
- 首先,让它能工作
- 让它做对
味道与启发
注释、环境、函数、名称、测试。
blog comments powered by Disqus