《重构与模式(修订版)》—第1章1.6节演进式设计

1.6 演进式设计
重构与模式(修订版)
今天,在对模式——这种“重构产生设计结构”已经非常熟悉之后,我了解到充分理解为什么要“通过重构实现模式或者重构趋向模式”,比理解应用模式的结果或者结果的实现细节更有价值。

如果想成为一名更优秀的软件设计师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程中隐藏着真正的大智慧。演变所得到的设计结构当然也有帮助,但是不知道设计是怎么发展而来的,在下一个项目中你就很可能错误地应用,或者陷入过度设计的误区。

迄今为止,我们关于软件设计的文献更多地集中在讲授优秀的解决方案上,对这些解决方案的演变过程则重视不够。这种情况需要改变。正如伟大的诗人歌德说过的:“那些父辈们传下来的东西,如果你能拥有它,你就能重新得到它们。”重构方面的文献通过揭示优秀设计方案的演化过程,帮助我们更好地重新理解这些方案。

如果想发挥模式的最大效用,也必须这样做:将模式放到重构的背景中领会,而不是仅仅将模式视为与重构无关的可复用的要素。这恐怕就是我编写“模式导向的重构”目录的主要原因。

通过学习不断改进设计,你就能够成为一名更优秀的软件设计师,并且减少工作中过度设计和设计不足的情况。测试驱动开发和持续重构是演进式设计的关键实践。将“模式导向的重构”的概念注入如何重构的知识中,你会发现自己如有神助,能够不断地改进并得到优秀的设计。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-07-28 15:02:24

《重构与模式(修订版)》—第1章1.6节演进式设计的相关文章

《重构与模式(修订版)》—第1章1.1节过度设计

第1章 本书的写作缘由重构与模式(修订版)软件模式的伟大之处,就在于它们传达了许多有用的设计思想.所以,在学习了大量模式之后,就理应成为非常优秀的软件设计人员,不是吗?当学习.使用了几十个模式后,我也曾这样认为.模式帮助我开发灵活的框架,帮助我构建坚固.可扩展的软件系统.但是几年后,我却发现自己在模式方面的知识和使用模式的方式总是使我在工作中犯过度设计的错误. 设计技术进一步提高之后,我发现自己使用模式的方式逐渐发生了变化:我开始"通过重构实现模式.趋向模式和去除模式(refactoring t

《重构与模式(修订版)》—第1章1.4节测试驱动开发和持续重构

1.4 测试驱动开发和持续重构 重构与模式(修订版) 测试驱动开发[Beck, TDD]和持续重构,是极限编程诸多优秀实践中的两个,它们彻底改进了我开发软件的方式.我发现,这两个实践能够帮助我和公司降低过度设计和设计不足的几率,将时间用在按时地构造出高质量.功能丰富的代码上. 通过测试驱动开发(TDD)和持续重构,我们将编程变成一种对话1,从而高效地使可以工作的代码不断演变. 问:编写一个测试,向系统提问. 答:编写代码通过这个测试,回答这一提问. 提炼:通过合并概念.去芜存菁.消除歧义,提炼你

《重构与模式(修订版)》—第1章1.5节重构与模式

1.5 重构与模式重构与模式(修订版)我观察了自己和同事们在许多项目中重构的对象和方式.在使用<重构>[F]一书中描述的许多重构方法时,我们还发现模式有助于改进设计.很多次我们都是通过重构实现模式,或者通过趋向模式进行重构,小心翼翼地避免产生过分灵活或者过度复杂的方案. 深入研究了应用"模式导向的重构"的动机之后,我发现它和"实现低层次重构"的一般动机是一样的:减少或去除重复的地方,简化复杂之处,使代码更好地表达其意图. 但是,如果只学习某个设计模式的一

《重构与模式(修订版)》目录—导读

版权声明 重构与模式(修订版) Authorized translation from the English language edition, entitled: Refactoring to Patterns, 978-0-321-21335-8 by Joshua Kerievsky, published by Pearson Education, Inc., publishing as Addison- Wesley Professional, Copyright 2005 Pears

《软件工程(第4版?修订版)》—第2章2.2节软件过程模型

2.2 软件过程模型 软件工程(第4版•修订版) 软件工程文献描述了很多软件过程模型.有些模型是规定性的(prescription),说明软件开发应该进行的方式:而另一些是描述性的(description),说明软件开发实际进行的方式.从理论上讲,两种类型的模型应该是相似或相同的,但事实并非如此.建立过程模型并讨论它的子过程有助于开发团队理解开发过程的理想情况与实际情况之间的差距. 对过程进行建模的原因还有很多. 当一个小组记录下开发过程的描述时,就会形成对软件开发中的活动.资源和约束的共同理解

《编程珠玑(第2版•修订版)》—第1章1.1节一次友好的对话

第一部分 基础 编程珠玑(第2版•修订版) 这一部分的5章回顾程序设计的基础知识.第1章介绍一个问题的历史,我们把仔细的问题定义和直接的程序设计技术结合起来,得到优美的解决方案.这一章揭示了本书的中心思想:对实例研究的深入思考不仅很有趣,而且可以获得实际的益处. 第2章讨论3个问题,其中重点强调了如何由算法的融会贯通获得简单而高效的代码.第3章总结数据结构在软件设计中所起到的关键作用. 第4章介绍一个编写正确代码的工具--程序验证.在第9章.第11章和第14章中生成复杂(且快速)的函数时,大量使

《设计模式解析(第2版•修订版)》—第2章 2.1节概览

第2章 UML2.1 概览设计模式解析(第2版•修订版)本章内容 本章将简单概述UML(统一建模语言),这是面向对象界主要使用的一种建模语言.如果你还不知道UML,阅读本章将使你具备阅读本书模型图所需的最低限度的知识. 本章中,我们将: 叙述"什么是UML"和"为什么使用UML": 阐述本书中的基本UML图,即 类图: 交互图. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

《设计模式解析(第2版•修订版)》—第2章 2.6节小结

2.6 小结设计模式解析(第2版•修订版)本章内容 UML既能够充实设计,又能够用于设计的交流.不要太担心要"正确地"画图.要考虑的是什么方式最有利于交流设计中的概念.换句话说,如果你认为有什么东西需要说,可以用注释来表达. 如果你对一个图标或符号不太确定,必须查手册才能确定其意义,还是加一条注释来解释.毕竟,其他人有可能也不清楚它的意义.清晰为好.当然,这也意味着你应该以规范的方式使用UML--那样无法正常交流.在画图的时候,只考虑要传达的思想即可. 本文仅用于学习和交流目的,不代表

《设计模式沉思录》—第1章1.1节对模式的十大误解

第1章 介绍设计模式沉思录在阅读本书之前,如果读者还没有听说过一本名叫<设计模式>(Design Patterns: Elements of Reusable Object-Oriented Software [GoF95])的书,那么现在正好可以去找一本来读.如果读者听说过该书,甚或自己还有一本但却从来没有实际研读过,那么现在也正好应该好好研读一下. 如果你仍然在继续往下阅读,那么我会假设你不是上述两种人.这意味着你对模式有大致的了解,特别是对23个设计模式有一定的了解.你至少需要具备这样的