第3讲一种编程理论.PDF

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 3 章 一种编程理论 就算是再巨细靡遗的模式列表,也不可能涵盖编程中所遇到的每一种情 况。你免不了(甚至常常)会遭遇到这种情景:上穷碧落,也找不到对应的 现成解决方案。于是便需要有针对特定问题的通用解决方案。这也正是学习 编程理论的原因之一。原因之二则是那种知晓如何去做、为何去做之后所带 来的胸有成竹。当然,如果把编程的理论和实践结合起来讨论,内容就会更 加精彩了。 每个模式都承载着一点点理论。但实际编程中存在一些更加深广的影响 力,远不是孤立的模式所能概括的。本章将会讲述这些贯穿于编程中的横切 概念,它们被分为两类:价值观与原则。价值观是编程过程的统一支配性主 题。珍视与其他人沟通的重要性,把代码中多余的复杂性去掉,并保持开放 的心态,这才是我工作状态最佳的表现。这些价值观—沟通、简单和灵活 —影响了我在编程时所做的每个决策。 此处描述的原则不像上面的价值观那样意义深远,不过每一项原则都在 许多模式中得以体现。价值观有普遍的意义,但往往难以直接应用;模式虽 可以直接应用,却是针对于特定情景;原则在价值观和模式之间搭建了桥梁。 我早已发现,在那种没有模式可以应用,或是两个相互排斥的模式可以同等 应用的场合,如果把编程原则弄清楚,对解决疑难会是一件好事。在面对不 确定性的时候,对原则的理解让我可以“无中生有”创造出一些东西,同时 能和其他的实践保持一致,而且结果一般都不错。 11 第 3 章 一种编程理论 价值观、原则和模式,这 3 种元素互为补充,组成了一种稳定的开发方 式。模式描述了要做什么,价值观提供了动机,原则把动机转化成了实际 行动。 这里的价值观、原则和模式,是通过我的亲身实践、反思以及与其他人 的讨论总结出来的。我们都曾经从前人那里吸收经验,最终会形成一种开发 方式,但不是唯一的开发方式。不同的价值观和不同的原则会产生不同的方 式。把编程方式用价值观、原则和模式的形式展现出来,其优点之一就是可 以更加有效地展现编程方法的差异。如果你喜欢用某种方式来做事,而我喜 欢另一种,那么就可以识别出我们在哪种层次上存在分歧,从而避免浪费时 间。如果我们各自认可不同的原则,那么争论哪里该用大括号根本无助于解 决问题。 3.1 价值观 有 3 个价值观与卓越的编程血脉相连,它们分别是:沟通、简单和灵活。 虽然它们有时候会有所冲突,但更多的时候则是相得益彰。最优秀的程序会 为未来的扩展留下充分的选择余地,不包含不相关的元素,容易阅读,容易 理解。 3.1.1 沟通 如果阅读者可以理解某段代码,并且进一步修改或使用它,那么这段代 码的沟通效果就很好。在编程时,我们很容易从计算机的角度进行思考。但 只有一面编程一面考虑其他人的感受,我才能编写出好的代码。在这种前提 下编写出的代码更加干净易读,更有效率,更清晰地展现出我的想法,给了 我全新的视角,减轻了我的压力。我的一些社会性需要得到了自我满足。最 开始编程吸引我的部分原因在于我可以通过编程与外界交流,然而,我不想 与那些难缠又无法理喻的烦人家伙打交道。过了 20 年,把别人当作空气一样 12 3.1 价值观 的编程方式才在我眼中褪尽了颜色。耗尽心神去精心搭建一座糖果城堡,于 我而言已毫无意义。 Knuth 所提出的文学编程理论促使我把注意力放到沟通上来:程序应该 读起来像一本书一样。它需要有情节和韵律,句子间应该有优雅的小小跌宕 起伏。 我和 Ward Cunningham 第一次接触到文学性程序这个概念以后,我们决 定来试一试。我们找出 Smalltalk 中最干净的代码之一—ScrollController, 坐到一起,然后试着把它写成一个故事。几个小时以后,我们以自己的方式 完全重写了这段代码,把它变成了一篇合情合理的文章。每次遇到难以解释 清楚的逻辑,重新把它写一遍都要比解释这段代码为何难以理解容易得多。 沟通的需要改变了我们对于编码的看法。 在编程时注重沟通还有一个很明显的经济学基础。软件的绝大部分成本 都是在第一次部署以后才产生的。从我自己修改代码的经验出发,我花在阅 读既有代码上的时间要比编写全新的代码长得多。如果我想减少代码所带来 的开销

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档