“云无界、端无边” OGeek 技术峰会 9月17日 南京不见不散! 了解详情
写点什么

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

  • 2008 年 12 月 11 日
  • 本文字数:2138 字

    阅读完需:约 7 分钟

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 年工作经验。

2008 年 12 月 11 日 19:283116
用户头像

发布了 1128 篇内容, 共 477.5 次阅读, 收获喜欢 2293 次。

关注

评论

发布
暂无评论
发现更多内容

2020南京国际人工智能产品展览会

InfoQ_caf7dbb9aa8a

人工智能

轻言业务架构图

凌晞

架构 企业架构 架构设计 架构设计原则 业务架构

高难度对话读书笔记——目的篇

wo是一棵草

PanDownload复活了!60MB/s!附下载地址

程序员生活志

PanDownload 网盘 下载器

第3周作业提交

饭桶

架构方法论之“极限审视法”

凌晞

架构 方法论 设计思维

“三段三域法”应用架构模型

凌晞

架构 架构设计 技术架构

MySQL-技术专题-Join语法以及性能优化

浩宇の天尚

MySQL-技术专题-实战技巧

浩宇の天尚

晨间日记的奇迹

熊斌

读书笔记

2020第十三届(南京)智慧城市技术与应用产品展览会

InfoQ_caf7dbb9aa8a

2020南京国际工业互联网及工业通讯展览会

InfoQ_caf7dbb9aa8a

从戚家军看组织战斗力塑造(组织的六脉神剑)

凌晞

组织

技术解码 | 玩转视频播放,自适应码流技术

腾讯云音视频

音视频 转码

全屋智能2020第十三届(南京)国际智能家居展览会

InfoQ_caf7dbb9aa8a

坚持写技术博客一年能有多少收获!

小傅哥

Java 面试 架构师 编程经验 技术博客

我就不服了,看完这篇文章,5大常见消息队列开发你还学不会

小Q

Java 编程 程序员 开发 消息队列

转型敏捷123

研发管理Jojo

第3周学习总结

饭桶

技术革新的脉络及趋势

凌晞

技术 进步

架构师训练营第一期 - 第四周课后 - 作业二

极客大学架构师训练营

2020第十三届南京国际智慧工地装备展览会

InfoQ_caf7dbb9aa8a

2020第十三届南京国际大数据产业博览会

InfoQ_caf7dbb9aa8a

什么是 Kubeless?| 玩转 Kubeless

donghui

Kubernetes kubeless

MySQL-技术专题-SQL性能分析

浩宇の天尚

Java 客户端操作 FastDFS 实现文件上传下载替换删除

哈喽沃德先生

Java 文件系统 分布式文件存储 fastdfs 文件服务器

快讯2020第十三届亚洲国际物联网展览会-南京站

InfoQ_caf7dbb9aa8a

2020第十三届南京国际智慧新零售暨无人售货展览会

InfoQ_caf7dbb9aa8a

2020第十三届南京国际智慧停车展览会

InfoQ_caf7dbb9aa8a

手把手教你锤面试官 04——假装精通redis

慵懒的土拨鼠

Redis-技术专题-数据结构

浩宇の天尚

首届腾讯云大数据峰会暨Techo TVP开发者峰会

首届腾讯云大数据峰会暨Techo TVP开发者峰会

InfoQ中文站翻译之作《实现模式》中文版面市_Java_InfoQ 中文站_InfoQ精选文章