`

高效模式编写者的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:收集并...

    编写高效优雅Java程序.zip

    "编写高效优雅Java程序.pdf"很可能是一个详细的教程,涵盖了如何运用Java特性、最佳实践和设计原则来编写高效且优雅的代码。 教程可能涵盖以下知识点: 1. 内存管理:Java的垃圾回收机制、对象生命周期管理,以及...

    编写优化、高效、无错地代码

    在编程领域,编写优化、高效、无错的代码是每个开发者必须掌握的核心技能。这不仅关乎程序的性能,还直接影响到软件的可维护性、用户体验和项目成功率。下面,我们将深入探讨这一主题,涵盖多个关键知识点。 首先,...

    《Delphi7组件编写者指南》英文版

    《Delphi7组件编写者指南》是一本专为Delphi开发者设计的专业书籍,尤其是对于那些致力于组件开发的程序员来说,它具有极高的学习价值。尽管是英文版,但其深入浅出的讲解方式使得即便对英语有一定挑战的读者也能...

    精选的Go设计模式、食谱和习惯用法列表.zip

    7. **观察者模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Go的channel和goroutine可以用来实现事件驱动的观察者模式。 接下来是“食谱”,在...

    Linux中高效编写Bash脚本的9个技巧

    ### Linux中高效编写Bash脚本的9个技巧 #### 1. 在脚本中多写注释 注释在任何编程语言中都是至关重要的,它们帮助开发者理解代码的功能和目的。在Bash脚本中,注释同样非常重要,尤其是在团队环境中或者当你未来...

    初探Delphi模式编程

    观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Delphi的TComponent和TNotifyEvent机制就体现了这种模式,事件触发时,所有注册的事件处理...

    探寻高效课堂之道谈导学案的编写和使用PPT

    【高效课堂与导学案编写】\n\n高效课堂的核心理念是将学生置于学习的主体地位,强调他们的主动参与和自主探索。低效课堂往往表现为教师主导过多,学生被动接受,或者是过度依赖练习题,忽视了学生的学习能力和兴趣。...

    软件设计模式课后作业代码

    7. **策略模式**:定义一系列算法,并将每一个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户。适用于有多种算法可供选择的情况。 8. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问。...

    软件设计(设计模式)课程实验报告.docx

    **实验报告概述** 本实验报告聚焦于软件设计中的核心概念——设计模式,涵盖了面向对象设计原则、创建型...设计模式的学习和应用是软件开发中不可或缺的一部分,它能帮助开发者编写出更高效、更灵活且易于维护的代码。

    极客班C++设计模式课件资料.zip

    通过极客班和网易公开课提供的资源,学习者可以系统地了解和掌握设计模式,从而在实际项目开发中更加游刃有余,编写出高效、可扩展且易于维护的代码。无论是初学者还是有经验的开发者,都应该重视设计模式的学习,...

    java与模式 源代码

    设计模式包括创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如适配器、装饰器、代理)和行为型模式(如策略、观察者、责任链)等。 2. **Java编程语言**:Java是一种广泛使用的面向对象的编程语言,以其...

    java设计模式

    Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决常见问题的经验总结。...通过不断学习和实践,我们可以将这些模式内化为自己的编程习惯,从而编写出更加高效、优雅和易于维护的Java代码。

    JAVA设计模式chm

    Java设计模式是面向对象编程领域中的重要概念,它代表了在软件设计过程中,经过时间验证、反复使用并被广泛...在阅读和理解这份文档后,开发者能够更好地应对各种软件设计挑战,编写出更高效、更易于维护的Java代码。

    《SQL反模式》PDF版本下载.txt

    SQL反模式是指在数据库设计、查询编写及维护过程中可能出现的一些常见错误或者低效做法。这些错误不仅会降低数据库性能,还可能带来数据不一致甚至丢失的风险。了解并避免这些反模式对于提高数据库系统的稳定性和...

    java设计模式讲义以及源代码和其他辅助资料

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结...通过系统学习和实践,开发者可以提高自己的设计水平,编写出更加高效、灵活和可维护的代码,这对于个人职业发展和团队协作都至关重要。

    一个参考Junit的设计模式ppt

    JUnit的架构设计遵循了简单而高效的原则,同时采用了多种设计模式,如工厂模式用于创建测试实例,单例模式用于全局唯一的测试运行器,观察者模式用于事件通知等。这些模式的运用使得JUnit具有高度的可扩展性和可维护...

    java 与 模式 闫宏 pdf

    8. **学习路径**:对于初学者,书中的内容提供了一个逐步深入Java编程和设计模式的学习路径,而对于有经验的开发者,可以作为查阅和提高的参考。 9. **问题解决**:通过对各种模式的介绍,读者可以学会如何分析和...

    追MM与23种设计模式

    在“追MM”的情境下,外观模式可以帮助简化追求过程中的复杂度,比如通过一个统一的追求计划来协调所有行动,使其更加高效。 #### 11. 享元模式(Flyweight) 享元模式是一种结构型设计模式,它用于减少创建大量...

    设计模式softwarePatterns

    - **观察者模式**:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。 #### 模式语言 vs. 模式目录 除了单个设计模式外,还有一种更为高级的概念...

Global site tag (gtag.js) - Google Analytics