第1章 本书的写作缘由
软件模式的伟大之处,就在于它们传达了许多有用的设计思想。通过重构实现模式、趋向模式和去除模式。
过度设计
过度设计(over-engineering)是指代码的灵活性和复杂性超出所需。
不要做那些自认为”聪明“的假设。
如果预计错误,浪费的将是宝贵的时间和金钱。
过度设计的代码会影响生产率。
模式万灵丹
模式不是万灵丹,有时候一些短小、简单和直截了当的代码就可以完成冗余的设计模式。
设计不足(under-engineering)
设计不足比过度设计要常见得多。
产生设计不足的原因有如下几种:
- 程序员没有时间,没有抽出时间,或者时间不允许进行重构
- 程序员在何为好的软件设计方面知识不足
- 程序员被要求在既有系统中快速地添加新功能
- 程序员被迫同时进行太多项目
随着时间的推移,设计不足的软件将变成昂贵、难以维护深圳无法维护的大麻烦。
测试驱动开发和持续重构
通过测试驱动开发和持续重构,我们将编程变成一种对话,从而高效地使可以工作的代码不断演变。
问:编写一个测试,向系统提问。 答:编写代码通过这个测试,回答这一提问。 提炼:通过合并概念、去芜存菁、消除歧义,提炼你的回答。 反复:提出下一个问题,继续进行对话。
测试驱动开发+持续重构,强调的是持续分析和设计,与测试关系不大,这种方式有助于:
- 保持较低的缺陷数量
- 大胆地进行重构
- 得到更简单、更优秀的代码
- 编程时没有压力
重构与模式
通过重构实现模式,或者通过趋向模式进行重构,它们的动机都是一样的:减少或去除重复的地方,简化复杂之处,使代码更好地表达其意思。
模式之所以存在,就是为了解决问题,因此必须先了解它们有助于解决什么问题。
模式和重构之间存在着天然联系。模式是你想到达的目的地,而重构则是从其他地方抵达这个目的地的条条道路。
演进式设计
重构产生设计结构。
通过重构实现模式或者通过重构趋向模式。
如果想成为一名更优秀的软件设计师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程中隐藏着真正的大智慧。
”那些父辈们传下来的东西,如果你能够拥有它,你就能重新得到它们“。
将模式放到重构的背景中领会。
测试驱动开发和持续重构是演进式设计的关键实践。