InfoQ 中文站翻译之作《实现模式》中文版面市

阅读数:2416 2008 年 12 月 11 日

话题:JavaSOA敏捷.NETRuby编程语言架构设计模式语言 & 开发文化 & 方法

Kent Beck 著,InfoQ 中文站翻译的《实现模式》中文版近日已经面市:http://www.china-pub.com/508887。

这是一本相当靠谱的书。

因为它有一个相当靠谱的作者。

Kent Beck,JUnit 测试框架创始人,《测试驱动开发》和《解析极限编程》的作者,软件业中最具创新力,最富盛名的领袖之一。长期以来,他一直致力于挑战软件工程教条,推动模式、测试驱动开发以及极限编程等思想的应用和传播。

优秀的代码绝非仅仅是功能的堆砌:它可以清晰的表述出你的意图,自始至终保持一致性,让其他开发者可以理解并信任你的代码,能够信心十足的修改它。但是这 种代码不会自然而然地产生。它是编程人员每天数百个看似琐碎实则重要无比的决定的产物。在这本书中,Kent Beck 将自己多年形成的编程习惯以及阅读既有代码的体验凝练成了编程中的价值观、原则和 77 种实现模式,帮助人们写出更加简洁、清晰、组织良好且具有更 佳有效产出的代码。

在 OOPSLA 2007 大会上,Kent Beck 在接受 InfoQ 的采访时说:

这本书有一个前提,就是程序员需要通过代码来跟其他人交流,所以机械式的做法是远远不够的,你需要考虑当别人读你的代码时会有怎样的感受。编程更像是作家 写作,而不仅仅是构造一系列指令让机器运转。其主要原因在于,修改代码要用去编码成本的 3 倍、4 倍或者 5 倍之多,所以编码时一定要谨慎,别人阅读理解你的 代码,要远远超出你编码所用的时间。

……

我喜欢模式这种形式,是因为你可以通过模式来讨论做事情的动机。市面上有很多有关 Java 编程的书,那些优秀作品的作者都富有实践经验,曾经认真思考过应 该如何编程;但是我却只能读到一系列的指示,“像这样命名变量,像那样组织代码,等等”,在特定的情形下,这些都是不错的做法,但这样做的理由是什么?我 在书中从来没有看到过答案。它们在什么样的上下文中才能成为正确的做法?前提步骤是什么?又会有什么样的结果?如果我这样做了以后,还应该做些什么事情, 才能让整个系统协调有序?所以会出现不同的个人编程方式。

每一种编程方式都由许多决策组成。它们相互支持,协同工作,从中抽出一条来使用并不一定能有效果。所以通过模式这样一种形式,我就有机会问出这样的问 题,“你怎样给字段命名?”嗯,让我们来看一下,你打算向别人表达些什么东西?如果有人读到一个变量名,他们可能会对这个名字的哪方面感兴趣?在命名方面 有哪些约束?缩写的效果并不太好,但是原因何在?很长的名字也不好,理由又是什么?在以模式的名义写下这些经验时,我就有机会对这一切进行思索。我的变量 命名规则是,用简单的名字描述出变量在计算中所担任的角色,但是如果我把这个规则说出来就完了,有些人就会直接拿来用,不会去想为什么,也体会不到我所体 会到的东西,而且,当这条规则不再正确时,他们不知道规则背后隐藏着什么样的思索,所以也就不知道何时打破规则。

……

如果你尚未决定是否要读这本书,或许你还可以先听一下诸多名家的赞誉之语:

“Kent 是用代码来沟通的大师,他的代码不但易于理解,而且阅读起来是一大乐事。我们在创造高质量代码的过程中不断做出微小却重要的决定,本书每一章都是对这些决定的精辟解释和深刻洞察。”

——Erich Gamma,《设计模式》作者

“很多人没体会过代码的可读性能有多高,也没意识到可读性有多大的价值。Kent Beck 教过我很多,这本书让所有人都有机会以他为师。”

——Martin Fowler,《重构》、《企业应用架构模式》作者,ThoughtWorks 首席科学家

“《实现模式》填补了设计和编码之间的缺口。Beck 以价值观和原则为基础,引出了编程领域的一种新的思考方式。”

——Diomidis Spinellis,《Code Reading》和《Code Quality》的作者

或者,也可以读一下译者序:

这是一本关于如何写好代码的书。

如果你不认为写好代码是一件重要、困难并且有趣的事,请立即放下这本书。

什么是好的代码?可以工作的、性能良好的、不出 bug 的代码,就是好的代码吗?

所谓好的代码,除了其他所有要求以外,还应该清晰准确地传达写作者的想法。

Martin Fowler 在《重构》里说:“任何一个傻瓜都能写出机器能懂的代码。好的程序员应该写出人能懂的代码。”

如果你不同意这句话,请立即放下这本书。因为这是一本关于如何用代码与他人(而非机器)沟通的书。

任何读到这一行的程序员都应该读完这本书。

Steve McConnell 在《代码大全》里说:“不要过早优化,但也不要过早劣化。”这本书将告诉你如何在几乎不引入任何额外成本的前提下避免一些常见的低级错误——它们是常见的,因为几乎每个人都犯过并且还在犯着这些错误。

如果你确实没有时间,至少应该读完第 6 章“状态”。因为在各种常见的低级错误中最常见者就是关于“什么信息在什么地方”的决策错误。

在这样一本书的序言里说任何废话都将是佛头着粪。

所以,现在就祝你阅读愉快、编程愉快。

是为序。

InfoQ 独家提供样章:欢迎下载第 3 章《一种编程理论》

本书的译者为:

李剑,Ethos 资深工程师,InfoQ 中文站敏捷社区首席编辑,译作有《深入浅出 Struts2》《硝烟中的 Scrum 和 XP》

熊节,ThoughtWorks 资深咨询师,InfoQ 中文站敏捷社区编辑,译作有《重构:改善既有代码的设计》《J2EE 核心模式》《Contributing to Eclipse》

郭晓刚,InfoQ 中文站架构社区首席编辑,独立开发者,10 年工作经验。