基本信息
- 作者: (美)Kent Beck
- 译者: 李剑 熊节 郭晓刚
- 出版社:人民邮电出版社
- ISBN:9787115192264
- 上架时间:2008-12-8
- 出版日期:2009 年1月
- 开本:16开
- 页码:176
- 版次:1-1
- 所属分类:计算机 > 软件工程及软件方法学 > 设计模式
内容简介
计算机书籍
在本书中,作者将自己多年形成的编程习惯以及阅读既有代码的体验凝练成了编程中的价值观、原则和77种实现模式。
沟通、简单和灵活的价值观应当被所有开发人员所铭记。局部影响、最小化重复、将逻辑与数据捆绑等原则同样是通用性的指导思想,比价值观更贴近编程场景,在价值观和模式之间搭建了桥梁。在77种实现模式中,每一种模式都覆盖了编写简洁、清晰、易扩展、易维护的代码这一原则的某个方面。它们为日常的编程提供了丰富翔实的参考依据,并告诉大家这些代码如何为降低沟通成本和提高有效产出提供保障。
本书适用于各个阶段的开发者群体。刚刚涉足软件开发领域的新人能够透过大师的眼睛来看待编程,了解编程的价值观与原则;具有丰富经验的资深工程师则可以通过这些模式进行反思,探究成功实践背后的意义。把价值观、原则和开发实践结合之后,日常开发工作便会以崭新迷人的形式呈现在我们面前。
作译者
目录
1.1 导游图
1.2 那么,现在……
第2章 模式
第3章 一种编程理论
3.1 价值观
3.2 原则
3.3 小结
第4章 动机
第5章 类
5.1 类
5.2 简单的超类名
5.3 限定性的子类名
5.4 抽象接口
5.5 interface
5.6 抽象类
5.7 有版本的interface
5.8 值对象
5.9 特化
5.10 子类
译者序
如果你不认为写好代码是一件重要、困难并且有趣的事,请立即放下这本书。
什么是好的代码?可以工作的、性能良好的、不出bug的代码,就是好的代码吗?
所谓好的代码,除了其他所有要求以外,还应该清晰准确地传达写作者的想法。
Martin Fowler在《重构:改善既有代码的设计》里说,“任何一个傻瓜都能写出机器能懂的代码。好的程序员应该写出人能懂的代码。”
如果你不同意这句话,请立即放下这本书。因为这是一本关于如何用代码与他人(而非机器)沟通的书。
任何读到这一行的程序员都应该读完这本书。..
Steve McConnell在《代码大全》里说,“不要过早优化,但也不要过早劣化”。这本书将告诉你如何在几乎不引入任何额外成本的前提下避免一些常见的低级错误——它们是常见的,因为几乎每个人都犯过并且还在犯着这些错误。
如果你确实没有时间,至少应该读完第6章“状态”。因为在各种常见的低级错误中最常见的就是关于“什么信息在什么地方”的决策错误。
在这样一本书的序言里说任何废话都将是佛头着粪。
所以,现在就祝你阅读愉快、编程愉快。
是为序。...
前言
也可以把实现模式看作思考“关于这段代码,我想要告诉阅读者什么?”的一种方式。程序员大部分的时间都在自己的世界里绞尽脑汁,以至于用别人的视角来看待世界对他们来说是一次重大的转变。他们不仅要考虑“计算机会用这段代码做什么”,还要考虑“如何用这段代码与别人沟通我的想法”。这种视角上的转换有利于你的健康,也很可能有利于你的钱包,因为在软件开发中有大量的开销都被用在理解现有代码上了。
有一个叫做Jeopardy的美国游戏节目,由主持人给出问题的答案,参赛观众则来猜问题是什么。“猜一个词,表示扔出窗外。”“是defenestration吗?”“答对了。”
编程就好像Jeopardy游戏:答案用Java的基本语言构造给出,程序员则经常需要找出问题究竟是什么,即这些语言构造究竟是在解决什么问题。比如说,如果答案是“把一个字段声明为Set”,那么问题可能就是“我要怎样告诉其他程序员,这是一个不允许包含重复元素的集合?”本书介绍的实现模式列举了一组常见的编程问题,还有Java解决这些问题的方式。
和软件开发一样,范围的管理对于写书同样重要。我现在就告诉你本书不是什么。它不是编程风格指南,因为其中包含了太多的解释,最终的决定权则完全交给你。它不是设计书籍,因为其中关注的主要是小范围的、程序员每天要做很多次的决策。它不是模式书籍,因为这些实现模式的格式各不相同、随需而变。它不是语言书籍,因为尽管其中谈到了一些Java语言的特性,但我在写作时假设你已经熟悉Java了。
实际上本书建立在一个相当不可靠的前提之上:好的代码是有意义的。我见过太多丑陋的代码给它们的主人赚着大把钞票,所以在我看来,软件要取得商业成功或者被广泛使用,“好的代码质量”既不必要也不充分。即便如此,我仍然相信,尽管代码质量不能保证美好的未来,它仍然有其意义:有了质量良好的代码以后,业务需求能够被充满信心地开发和交付,软件用户能够及时调整方向以便应对机遇和竞争,开发团队能够在挑战和挫折面前保持高昂的斗志。总而言之,比起质量低劣、错误重重的代码,好的代码更有可能帮助用户取得业务上的成功。..
即便不考虑长期的经济效应,我仍然会选择尽我所能地编写出好代码。就算活到古稀之年,你的一生也只有二十多亿秒而已,这宝贵的时间不该被浪费在不能被自己引以为傲的工作上。编写好的代码带给我满足感,不仅因为编程本身,还因为知道别人能够理解、欣赏、使用和扩展我的工作。
所以,说到底,这是一本关于责任的书。作为一个程序员,你拥有时间、拥有才华、拥有金钱、拥有机会。对于这些天赐的礼物,你要如何负责地使用?下面的篇幅里包含了我对于这个问题的答案:不仅为我自己、为我的CPU老弟编程,也为其他人编程。
致谢
我首先、最后并且始终要感谢Cynthia Andres,我的搭档、编辑、支持者和首席讨债鬼。我的朋友Paul Petralia推动了这本书的写作,而且不断给我鼓励的电话。编辑Chris Guzikowski和我通过本书学会了如何在一起工作,他从Pearson的角度给了我一切需要的支持,让我能够完成写作。还要感谢Pearson的制作团队:Julie Nahil、John Fuller和Cynthia Kogut。Jennifer Kohnke的插图不但包含了丰富的信息,而且非常人性化。本书的审阅者给我的书稿提供了清晰而又及时的反馈,为此我要感谢Erich Gamma、Steve Metsker、Diomidis Spinellis、Tom deMarco、Michael Feathers、Doug Lea、Brad Abrams、Cliff Click、Pekka Abrahamson、Gregor Hohpe和Michele Marchesi。感谢David Saff指出“状态”与“行为”之间的平衡。最后,还要感谢我的孩子们,一想到他们乖乖呆在家里,我就有了尽快完成本书的动力。Lincoln、Lindsey、Forrest和Joelle Andres,感谢你们。...
媒体评论
——Erich Gamma,IBM杰出工程师
“很多团队都有那么一种开发高人,正确的决策可以一整天源源不断地从他们那里奔涌而出。这些高人编写的代码不但容易理解,便于修改,而且让人用起来舒舒服服毫无后顾之忧。他们总是有好的理由才会把代码编写成某种样子,并不是随意为之。本书会帮助你成为那种高人。本书既有相当的深度、广度,又写得明白流畅,不但经验丰富的程序员可以从中学到新的技巧,改善旧的习惯,新手也能很容易地入门。”
——Russ Rufer,硅谷模式讨论组
“很多人未曾体会过代码的可读性能有多高,也没有意识到可读性有多大的价值。Kent教过我很多,本书让所有人都有机会以他为师。”
——Martin Fowler,ThoughtWorks首席科学家
“代码要有阅读的价值,不只是对编译器有意义,更应该对人有意义。Kent Beck将他的经验提炼出来,凝练成了一套实现模式。这些真知灼见能让你的代码真正具有阅读的价值。”..
——Gregor Hohpe,Enterprise Integration Patterns(中译版《企业集成模式:设计、构建及部署消息传递解决方案》)的作者
“Kent Beck在书中展示了如何运用一些简单的原则,自然而然地编写出清晰可读的代码。本书帮助开发者编写出揭示意图的代码,让代码既易于理解,又有灵活性,有利于未来扩展。认真对待自己的代码的程序员,必读此书。”
——Sven Gorts
“本书填补了设计和编码之间的缺口。Beck以价值观和原则为基础,引出了编程领域的一种新的思考方式。”...
——Diomidis Spinellis,Code Reading(中译版《代码阅读方法与实践》)和Code Quality(中译版《高质量程序设计艺术》)的作者