- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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,
坐到一起,然后试着把它写成一个故事。几个小时以后,我们以自己的方式
完全重写了这段代码,把它变成了一篇合情合理的文章。每次遇到难以解释
清楚的逻辑,重新把它写一遍都要比解释这段代码为何难以理解容易得多。
沟通的需要改变了我们对于编码的看法。
在编程时注重沟通还有一个很明显的经济学基础。软件的绝大部分成本
都是在第一次部署以后才产生的。从我自己修改代码的经验出发,我花在阅
读既有代码上的时间要比编写全新的代码长得多。如果我想减少代码所带来
的开销
您可能关注的文档
- 2014年~2016年高考文综历史选择题试题分析与备考策略.ppt
- --2014年高三英语一模单选、完型题型分析与复习策略瑞.ppt
- 2014年贵州省公务员和选调考试言语理解和表达备考指导主讲.ppt
- 2014年两岸三地高分子液晶态和超分子有序结构学术研讨会.PDF
- 2014年上半年小企业发展情况与下半年的工作思路.docx
- 第2章 欢迎光临标准网-标准公告-行业标准批准发布公告-中华人民共.PDF
- 第2章 环孢菌素联合抗人淋巴细胞球蛋白治疗重型再生障碍性贫血5.PDF
- 2014年同济大学硕士研究生专业目录与初复试科目.PDF
- 第3讲第3节脂类(lipids).ppt
- 第3讲电阻式传感器.ppt
文档评论(0)