开篇语
- 消除重复
- 提高表达力
让营地比你来时更干净
- 第2章 有意义的命名
- 第3章 函数
- 短小
- 只做一件事
- 每个函数一个抽象层级
- 第4章 注释
- 第5章 格式
- 第6章 The Law of Demeter 最少知道原则
模块不应了解它所操作对象的内部情况。对象隐藏数据,暴露操作。
- 第7章 错误处理:将错误处理独立于主要逻辑之外
- 使用异常而非返回码
- 不返还null值
- 不要传递null值
- 第8章 边界
- 第三方jar的隔离包装
- 使用学习性测试
- 将一直代码和位置代码隔离:如定义接口,通过适配器方式
- 第9章 保持测试整洁
- TDD三定律
- FIRST:整洁测试的5条规则:运行快速;相互独立;可重复测试通过;自足验证;先写测试再写生产代码;
- 第10章 要关注类代码组织和整洁
- 类应该短小
- 封装
- 单一职责
- 内聚
- 为了修改而组织
- 可预见性的未来变化
- 未来变化的风险屏蔽(减少对现有代码的影响与耦合)
- 抽象提取对象和行为
- 第11章 系统
- 如何创建一个城市
- 横向模块划分
- 不同的抽象等级
- 系统的构造和使用分开
- 系统的启动过程和系统的运行过程
- mian创建系统的所需对象,再传递给应用程序
- 工厂模式
- 依赖注入
- 扩容
- 系统需要迭代、重构和扩展
- 测试驱动系统架构
- 软件系统不比做BDUF(Big Design Up Front)设计
- 如何创建一个城市
- 第12章 迭进
- 运行所有可测试性
- 重构:新加入的代码是否影响现行的设计,以及现行的代码逻辑
- 消除重复
- 表达力:易维护、易于阅读、逻辑清晰
- 第13张 并发编程
- 并发的一些预发原则
- 单一原则
- 线程尽可能独立
- 执行模型
- 定义
- 限定资源
- 线程饥饿
- 死锁
- 活锁
- 生产者-消费者模型:生产者和消费者之间的队列是一种限定资源
- 读者-作者模型:线程饥饿
- 定义
- 并发的一些预发原则
- 第14章 逐步改进
- 易读
- 易维护
- 逻辑清晰
- 代码是变化的,新的代码加入要思考对原有结构和执行代码的影响,使用单测方式,思考重构扩展
- 抽象思考:抽取共性;结构化思维(再次加工归类)