读书-代码整洁之道10-14

  • 类的三大特性:封装、继承、多态;
  • 类应该短小;
  • 单一权责原则认为,类或模块应有且只有一条加以修改的理由;
  • 当类丧失了内聚性,就拆分它;
  • 隔离修改

系统

  • 构造和使用是非常不一样的过程。每个应用程序都该留意启始过程。
  • 将构造与使用分开的方法之一是将全部构造过程搬迁到main或被称之为main的模块中,设计系统的其余部分时,假设所有对象都已正确构造设置。
  • 有一种强大的机制可以实现分离构造与使用,那就是依赖注入,控制反转在依赖管理中的一种应用手段。控制反转将第二权责从对象中拿出来,转移到另一个专注于此的对象中,从而遵循了单一权责原则。
  • 我们应该只去实现今天的用户故事,然后重构,明天再扩展系统、实现新的用户故事。这就是迭代和增量敏捷的精髓所在。
  • 软件系统与物理系统可以类比。它们的架构都可以递增式地增长,只要我们持续将关注面恰当地切分。
  • java中三种方面或类似方面的机制:java代理、纯Java AOP框架、AspectJ的方面。
  • 最佳的系统架构由模块化的关注面领域组成,每个关注面均用纯 Java(或其他语言)对象实现。不同的领域之间用最不具有侵害性的方面或类方面工具整合起来。这种架构能测试驱动,就像代码一样。
  • 拥有模块化关注面的 POJO 系统提供的敏捷能力,允许我们基于最新的知识做出优化的、时机刚好的决策。决策的复杂性也降低了。
  • 系统需要领域特定语言。领域特定语言允许所有抽象层级和应用程序中的所有领域,从高级策略到底层细节,使用 POJO 来表达。

迭进

  • 简单设计,以下规则按其重要程度排列
    1. 运行所有测试
    2. 不可重复
    3. 表达了程序员的意图
    4. 尽可能减少类和方法的数量
  • 不可重复。重复是拥有良好设计系统的大敌。它代表着额外的工作、额外的风险和额外且不必要的复杂度。
  • 表达力。可以通过选用好的名称来表达,也可以通过保持函数和类尺寸短小,还可以通过采用标准命名法。编写良好的单元测试也具有表达性,不过最重要方式却是尝试。下足功夫调整代码,让后来者易于阅读。

并发编程

  • 并发是一种解耦策略。它帮助我们把做什么(目的)和何时(时机)做分解开。
  • 有关编写并发软件的中肯说法
    1. 并发会在性能和编写额外代码上增加一些开销;
    2. 正确的并发是复杂的,即便对于简单的问题也是如此;
    3. 并发缺陷并非总能重现,所以常被看做偶发事件而忽略,未被当做真的缺陷看待;
    4. 并发常常需要对设计策略的根本性修改。
  • 并发防御原则
    1. 单一权责原则
    2. 推论:限制数据作用域
    3. 推论:使用数据复本
    4. 推论:线程应尽可能地独立
  • 警惕同步方法之间的依赖,保持同步区域微小。
  • 测试线程代码:
    1. 将伪失败看作可能的线程问题;
    2. 先使非线程代码可工作;
    3. 编写可插拔的线程代码;
    4. 编写可调整的线程代码
    5. 运行多于处理器数量的线程;任务交换越频繁,越有可能找到错过临界区或导致死锁的代码
    6. 在不同平台上运行;应该在所有可能部署的环境中运行测试
    7. 装置试错代码。硬编码、自动化

逐步改进

解决之道就是保持代码持续整洁和简单。永不让腐坏有机会开始

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值