`
shinfocom
  • 浏览: 1191291 次
文章分类
社区版块
存档分类
最新评论

高效模式编写者的7个习惯

 
阅读更多

——选自《设计模式沉思录》

习惯1:经常反思
对编写模式来说,唯一最重要的事情就是反思。Bruce Anderson是最早对我们的工作产生影响的人之一,早在几年前他就提出了这一点。定期反思一下自己做了些什么。想一想自己构建的系统,自己面临的问题,以及自己是如何解决(或无法解决)它们的。

习惯2:坚持使用同一套结构
把模式写到纸上的第一步就是确定它的结构。模式的平均信息量越大,结构的重要性就越高。一致的结构可以增加模式的统一性,让人们更容易对模式进行比较。结构还有助于人们搜索信息。结构越简单就越单调,如果只是让人随便看看,可能不成问题,但如果还想让它起到比较和引用的作用,就无法接受了。

习惯3:尽早且频繁地涉及具体问题
由于要涉及具体问题,自然就需要现实世界中的大量例子。例子不应该只是动机部分的专利。从头到尾,都应该用例子和反例来解释一些关键点。即便是我们的模板中最抽象的部分(比如适用性、结构、参与者和协作)也会不时包括一些例子。例如,一些模式的协作部分包含了一些交互图(interaction diagram),用来展示在运行的时候对象之间如何通信。在从抽象的角度讨论模式时,也可以引用这样的例子,即便在讨论抽象概念时也要涉及具体问题。

习惯4:保持模式间的区别和互补性
一定要确保各个模式是正交的,而且它们可以协同使用。不断地扪心自问:“模式X和模式Y之间的区别是什么?”如果两个模式解决的问题是相同的或具有相似性,那么也许能把它们合并到一起。如果两个模式使用了相似的类层次结构,那么不必担心。面向对象编程提供的机制本来就不多,所以它们的用法也相对有限。同样的类层次结构经常会产生截然不同的对象结构,它们解决的问题也多种多样。模式之间的区别应该由它们的意图来决定,而不是由实现模式的类层次结构来决定。

习惯5:有效地呈现
这里说的“呈现”有两个意思:排版和写作风格。页面布局的技术、版面、图形以及打印机的质量直接影响到排版的好坏。尽可能使用最好的软件工具(字处理程序、绘图编辑器等)。多使用插图来解释关键点。你也许认为不需要任何插图,但很可能你还是会用到。至少它们可以避免单调乏味,而最好的情况下它们可以将那些语言无法解释清楚的问题解释清楚。并不是所有的插图都必须是正式的类图和对象图。在很多情况下,非正式的插图甚至是草图也能够传达同样多的信息,甚至更多的信息。如果自己不擅长画图,那么可以请别人代劳。

与好的排版相比,好的写作风格就更加重要了。以清晰直白的方式写作。最好是使用贴近实际的风格,避免枯燥无味的学究风格。通俗的语气比较容易被人理解和接受, 从而让人更快地接纳新内容。清晰性和易读性对大多数写作来说都非常重要,对模式写作来说尤其重要。模式的概念还比较新,如果谈论的内容又比较复杂,那么有些人将完全无法领会其中的要点。要想方设法让模式变得更易理解。


习惯6:不懈地重复
你需要一遍又一遍地编写和重写你的模式,对此要做好心理准备。不要追求必须等前一个模式到达完美状态后才开始编写下一个模式。记住,模式不是孤立的,它们之间会相互影响。对一个模式所做的显著修改很可能会影响到其他模式。就像任何一个循环往复的过程一样,在某一时刻你的模式会趋于稳定,这时你应该把自己努力的成果汇集起来,供他人阅读、理解并发表评论了,但它并不代表模式开发的终点。

习惯7:收集并吸取反馈
鼓励你的同事在讨论设计时引用你的模式,并在需要的时候参与到此类讨论中。寻求机会,将你的模式运用到日常工作中去。尽可能广地传播你的模式,甚至可以将它们提交给PLoP之类的会议或C++ Report、Smalltalk Report和Journal of Object-Oriented Programming之类的书刊。这样的曝光可以获得大量良好的反馈。

设计模式沉思录

分享到:
评论

相关推荐

    设计模式沉思录.pdf

    高效模式编写者的7个习惯5.1 习惯1:经常反思5.2 习惯2:坚持使用同一套结构5.3 习惯3:尽早且频繁地涉及具体问题5.4 习惯4:保持模式间的区别和互补性5.5 习惯5:有效地呈现5.6 习惯6:不懈地重复5.7 习惯7:收集并...

    x86汇编语言 实模式到保护模式 代码学习.zip

    汇编语言是一种面向机器的低级语言,用于编写计算机程序。汇编语言与计算机机器语言非常接近,汇编语言程序可以使用符号、助记符等来代替机器语言的二进制码,但最终会被汇编器编译成计算机可执行的机器码。 相较于...

    Google-JavaScript-编码规范指南

    Google JavaScript编码规范指南是Google公司推出的一套详尽且实用的JavaScript编程规范,旨在为开发者提供一个清晰、一致的编码标准,以提高代码质量、可读性和可维护性。这套规范不仅涵盖了JavaScript语言的基础...

    数据结构C++ 串的基本操作和BF算法与KMP算法的比较—适合初学者和复习.docx

    本Word资源分为三个内容共6页(部分代码含注释):用串的顺序结构(数组)实现一段任意文本的单词个数的统计(详见注释)、比较BF算法和KMP算法(提供...代码适合初学者和复习,仅供参考,学习时请养成独立思考的习惯。

    PerCM个人代码管理软件

    送自己一句话:“不要让这个世界的复杂性阻碍你前进,要成为一个行动主义者”。需要做的实在是太多了,立刻行动吧。 2012年2月26日21:55:32 上个周末回了次盱眙,这几天工作冲突太大,而且手头出现了一个复杂的...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    配16小时多媒体教学视频,高效、直观 一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    配16小时多媒体教学视频,高效、直观 一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    论大数据的数据来源与采集.docx

    在美国《连线》杂志2006年的6月刊上,该杂志的记者Jeff Howe首次推出了众包的概念,即指一个公司或机构把过去由员工执行的工作任务,以自由自愿的形式外包给非特定的、而且是大型的大众志愿者的做法.众包和外包的...

    软件工程知识点

    主要有以下几个方面的设计任务:制定规范、系统构架设计、软件结构设计、公共数据结构设计、安全性设计、故障处理设计、可维护性设计、编写文档、设计评审。 2.系统构架设计 (1)集中式结构 集中式系统由一台...

    酒店管理系统(软件工程课程设计).doc

    酒店管理系统(软件工程课程设计 一、摘要: 酒店,是为客人提供住宿、餐饮、娱乐和其它服务的综合性服务企业,它所接待的客 来自世界各地,而且这些客人的生活习惯、消费水平、信仰等各不相同。随着我国旅游 业的...

    RouterOS2.9.6.with.crack及配置动画

    MikroTik RouterOS是一种路由操作系统,并通过该软件将标准的PC电脑变成专业...Winbox是一个可视化的路由器管理工作,目前版本也有中文版的,但大多数routeros管理者因为使用习惯的原因还是比较喜欢使英文版的Winbox。

    加强计算机软件设计可维护性的措施探究.docx

    为我国的经济发展及生活水平的提升起到了极大的作用,随之而来的就是计算机软件的迅猛发展,由于生产模式的转变,人们工作、生活习惯的改变,各种各样的新需求,就必须要不断的创新,以顺应目前的计算机软件不断变化...

    【RT-Thread作品秀】基于stm32F407与RT-thread的问了智能水培系统-电路方案

    其中 PH 由与调节中涉及化学变化调解初期会有较大浮动,整体调解 时间在 30—40 分钟左右,由于水培的种植周期长达几个月且自动模式下只需要 两次营养液调整,其他均为范围维持,因此该调节时间可以接受。...

Global site tag (gtag.js) - Google Analytics