复杂要人命,它消磨开发者的生命,让产品难以规划、构建、测试。
一个城市能运转,因为它演化出恰当的抽象等级和模块,好让个人和他们所管理的组建,在不了解全局时也能有效运转。
软件开发中,整洁的代码帮助我们在较底层的抽象。层级上达成这一目标。。本章讨论如何在较高抽象层级—系统层级 上保持整洁。
1. 将系统的构造与使用分开
构造与使用是非常不一样的过程。
软件系统应将起始过程和起始过程之后的运行时逻辑分离开,在起始过程中构建应用对象,也会存在相互缠结的依赖关系。
1.1 分解main 将构造与使用分开
1.2 工厂 确定何时创建对象
1.3 依赖注入
2. 扩容
实现当前内容,然后重构,明天再扩展系统,实现新的功能。这就是迭代和增量敏捷的精髓所在。测试驱动开发,重构以及打造整洁代码。
3. JAVA代理
代码量和复杂度是代理的两大弱点,创建整洁代码变得很难。
4. 纯Java AOP框架
springAOP 和 JBoss AOP
5. AspectJ方面
通过方面来实现关注面切分的功能最全的工具。
6. 测试驱动系统架构
最佳的系统架构有模块化的关注面领域组成,每个关注面均用纯Java对象实现。不同领域之间用最不具有侵害性方面或类方面工具整合起来。这种架构能测试驱动,就像代码一样。
7. 优化决策
模块化和关注面切分成就了分散化管路和决策。 延迟决策至最后一刻也是好手段。
模板模式也是应用这一理论,延迟实现细节
8. 明智使用添加了可论证价值的标准
9. 系统需要领域特定语言
领域特定语言允许所有抽象层级和应用程序中的所有领域,从高级
策略到底层细节,使用POJO表达。
总结
在所有的抽象层级上,意图都应该清晰可辨