Jolt
大奖精选丛书
代码质量(权威精选植根于开发实践的最½读物)
(希)斯宾耐立思(Spinellis,D.)著
左飞,吴跃,李洁译
ISBN 978-7-121-17421-6
2012
年
7
月出版
定价:89.00 元
16
开
512
页
宣传语:一项技术产品只有在获得了
Jolt
奖之后才½真正成为行业的主流,一本技术图书
只有在获得了
Jolt
奖之后才½真正奠定经典的地½。
内 容 简 介
Jolt
大奖素有“½件业之奥斯卡”的美称,本丛书精选自
Jolt
历届获奖图书,以植根于开
发实践中的独到工程思想与杰出方法论为主要甄选方向。Diomidis
Spinellis
首部著½《代码
阅读》
(Code
Reading)旨在阐明程序员应如½理解与修改代码,与此不同的是,本书重点
讨论代码的非功½特性,深入讲述代码如½满足重要的非功½性需求,如可靠性、安全性、
可移植性和可维护性,
以及时间效率和空间效率。
本书从
Apache Web
应用服务器、
BSD UNIX
操½系统和
HSQLDB Java
数据库等开源项目中攫取数百个小例子,并以实例为基准点,辅
以理论分析,从实用的角度讲述每个专业½件开发人员½立即运用的概念和技术。
本书荣获
2007
年
Jolt
大奖,适用于不同知识层次的½件工½、程序开发和研究人员。
出版说明
经久不息的回荡
今时的读书人,不复有无书可读之苦,却时有品种繁多而无从择优之惑,甚而专业度颇
高的技术书领域,亦日趋遭逢乱花迷眼的境地。此时,若得觅权威书评,抑或有公信力的排
行榜,可按图索骥,大大增加选中½书的½中率。然而,如此良助,不可多得,纵观中外也
唯见一枝独秀——素有“½件业奥斯卡”之美誉的
Jolt
奖!
震撼世界者为谁
在计算设备已经成为企业生产和日常生活之必备工具的今天,
专业和大众用户对于½件
的功½、性½和用户½验的要求½在不断提高。在这样的背景下,如½½够发挥出½件开发
的最高效率和最大效½,
已经是摆在每一个从业者面前的重大课题,
而这也正是
Jolt
大奖横
空出世的初衷及坚持数年的宗旨。
Jolt
大奖历时
20
½年,在图书及½件业知名度极高,广受推崇。奖如其名,为引领计
算机科学与工程发展主流,Jolt 坚持将每年的奖项只颁给那些给整个
IT
业界带来震撼结果
的图书、工具、产品及理念等,因一流的眼光及超高的专业度而得以闻名遐迩,声名远播。
除图书外,Jolt 针对½件产品设有诸多奖项分类,如配½管理、协½工具、数据库引擎
/数据库工具、设计工具/建模、开发环境、企业工具、库/框架、移动开发工具等。½图书历
来是
Jolt
大奖中最受瞩目且传播最广的一个奖项分支。Jolt 曾设有通用类图书、技术类图书
等分类,
每个分类又设有“卓越奖”
Jolt Award,
(
一般为一个)
和“生产力奖”
Productivity Award,
(
一般为
2
或
3
个)
。获奖技术图书一经公布,即打上经典烙印,可谓一举“震撼全世界”(赞
助商
Jolt
可乐的广告词)
。
½为计算机技术图书的厚爱者,
我们总在½问——是谁在震撼世界,
是谁在照亮明天?
Jolt
大奖恰似摆在眼前的橱窗,让我们可以近距离观看½流在舞蹈,倾听震撼在½鸣!
朝花夕拾为哪般
Jolt
像是一年一度的承诺,在茫茫书海中为我们淘砺出一批批经得起岁月冲刷的杰½,
头顶桂冠的½½也因而得以一批批引进中½,为½人开阔了眼界,滋补了技术养分。然而,
或因技术差距造就的生不逢时、水土不服,或因翻译、制½的不如人意,抑或是疏于宣传等
诸多原因,这些经典著½在½内出版后,½管不乏如获至宝的拥趸,却仍不为诸多人所知,
从而与大量本应从中获益的读者擦肩而过。
既然这生生错失的遗憾本不该发生,
则更不应延
续。为此,我们邀½外出版同行、½内技术专家一道,踏上朝花夕拾之路,竭力为广大读者
筛选出历久弥新、震撼依旧的
Jolt
图书精品。
Jolt
获奖图书皆由业界专家一致评出,并得到½件从业人员的高度认可,½然这些书今
天读来,
不再½看到上世纪史诗时代那般日新月异的理论突破,
以及依赖于高深繁复的科学
研究所取得的系统化成果,
更多是在日复一日的开发实践中总结和提炼出来的工程思想和方
法论。重新选材之所以有所弃取,从
Jolt
多年来的评奖规律中可窥端倪——
一万小时真理见
凡是在工程思想领域取得革½性、
颠覆性突破的图书,
就被½于“震撼”获奖分类。
比如,
从基于过程的程序设计模型过渡到面向对象的全新模型,
就是½件开发思想上的一次带来巨
大震撼的革½;再比如,打破传统的瀑布模型而½向持续集成的½件交付模型,这也是一场
业界的重大思想½变。像这样的重大思想突破,可以说是数年甚至数十年一遇的,而荣获
Jolt
大奖的图书中更为常见的,则是基于最½实践的“生产效率”获奖者。获得此类殊荣的图
书,
½是½者们从平凡的、
重复的,
甚至用一般人的眼光看来不怎么起眼的日常开发实践中,
以独具的慧眼、过人的耐心和大胆的创新,闯开一条不平常道路的心血与经验总结。
这些图书所涉及的主题,
½是普通的½件开发人员每天要面对的工½——代码阅读、
撰
写测试用例、修复½件问题……½就是这样貌似平淡无奇的工½,是否½每一天、每一个项
目½做½,
着实拉开了½件开发人员素质的差距,
也决定了½件企业开发出来的产品和服务
的质量。
我们中½有一句古话,
叫做熟½生巧;
某½著名企业家也说过一句家喻户晓的名言:
“把简单的事千百万次地做½,就是不简单的。”这些朴素而实际的真理,同样也是本套丛书
最½½显的所谓程序员精神。
它建立在脚踏实地的实践基础之上,
也充满了对于自由和创新
的向往。
名½可堪比名曲
就不因岁月流逝而褪色来说,与这些
Jolt
名½相媲美者,只有那些百年响½、震撼古今
的经典名曲。
希望本丛书带给大家的每部著½,
也如百听不厌的乐曲,
掩卷良久方½音绕梁,
真知存心。
仔细想来,
½件开发与古典音乐岂非有异曲同工之妙?既是人类心智索问精确科
学的探究,亦是寻觅美学享受的½求。工程是艺术的根基,而艺术是工程的极致。衷心地希
望各½读者½够认真阅读本丛书的本本珍品,
并切实地用于自己的日常工½中,
在充分享受
大师魅力的同时,为中½的½件事业谱写更多、更震撼的乐章。
电子工业出版社博文视点
二○一二年春
原½者中文版序
中½是首个将我的“开源视角”系列½品再版的½家。这可½有很多原因,而其中一个特
别吸引人的原因与孔子的著½有关,他在《论语》中广泛地强调了学习研究的重要性。回顾
之前撰写《代码阅读》和《代码质量》1 的历程,我了解到,实际上,我鼓励了那些从事开
发工½的同事和学生借助研究学习½件代码来提升他们自身的知识和技½,
这正是我遵循孔
子金玉良言的一种方式。
《代码阅读》一书阐述了开发者应½如½阅读已有的代码。关于为½要进行代码阅读,
不少人也给出了许多现实中的原因:修正问题、添加特性、寻找有用的片段,或者½为½所
在机构质量控制流程的一部分对其进行复查。
然而,
进行代码阅读最重要的原因其实是从中
学习。从已有的高质量代码中,我们可以学习如½将严谨的代码风格应用于实践,如½编写
有用的注释,如½编排代码以方便他人读懂,如½选择有意义的标识符,以及如½将复杂的
代码组织为可管控的部分。
另外,
通过研究代码,
我们还可以学习到新的算法、
API
及架构。
简而言之,阅读代码可以帮助我们成为更加优秀的程序员。
《代码质量》一书,退后一步,方为大观。½代码被组装为程序时将会产生所谓的聚现
属性
2
:可靠性、安全性、CPU 利用率、空间占用率、可移植性及可维护性。½管这些属
性可½看起来½象且难以约束,½是诸多成功的经验表明,借助研究专家级的代码,我们可
以学习到许多极½的提升代码质量的方法。
我们可以从中发现严谨的错误测试、
安全证书的
保守处理、高效的算法、灵巧的½象技术及应用于实践中的基本设计模式。简而言之,这将
有助于我们成为极其优秀的程序员。
伟大的哲学家孔子曾经提过:“学而不思则½,思而不学则殆”。因此我推荐大家主动花
些时间来研究已有的代码并从中予以学习。
Diomidis Spinellis
2011
年
9
月于雅典
推 荐 序
今年恰逢“十二五”开局之年,在全球½件技术和产业格局孕育重大调整之际,我½½件
产业也在工业化、信息化“两化融合”的大背景下迎来了又一个快速发展的新阶段,这其中机
遇与挑战并存。
½下½件和信息服务业市场的规模不断扩大,
物联½½为又一个万亿元级别
的产业将产生千亿元级别的服务外包。预计到
2020
年,全球½在的服务外包市场需求将达
到
1.65½1.8
万亿美元,大力发展½件业及信息服务业将成为各½抓½新机遇、全面深度参
与全球化、提升½件产业技术力量的重要途径。目前我½½件产业规模½已过万亿元,½在
核心技术、基础½件等方面仍有很大发展空间。
高素质人才的储备是推进产业健康快速发展的根本保证。
高端½件人才的大量持续涌现,
关键在于教育,
这其中高校无疑要发挥重要的½用。
我们高校½件教育者既要继续贯½党的
教育理念,
进一步深化我½高级½件人才培养½系的发展进程;
同时又要看到我½与欧美等
高水平½件人才教育½家之间的距离,师夷长技,以求在全球化浪½中谋得一席之地。½为
一½优秀的½件教育者,Diomidis
Spinellis
教授的某些理念无疑是非常值得我们学习和借鉴
的。他以人类学习自然语言的认知规律为出发点,独辟新径,强调借助代码阅读来提高编程
½力。目前这一思½也已逐渐由欧美向我½渗透。
代码阅读是每一个½件从业人员经常进行的活动,
其重要性对于每一个开发者不言而喻,
½人们更多的是在本着修改前人代码而进行此项活动的,
换言之,
仅仅½用了代码阅读的工
½属性,而未见开发其学习属性。其实,代码阅读还帮助人们完成了“观察—模仿—创造”
这样一个过程的初始阶段。南朝刘勰《文心雕龙》里讲“观千剑而后识器”,与之类似,清乾
隆年间蘅塘退士还说“熟读唐诗三百首,不会½诗也会吟”,这½是强调了观察对于之后创造
的重要性(巧合的是写诗和写代码的观察½是借助阅读来完成的)
。
令人遗憾的是,一直以来,许多人½认为阅读代码不是件容易的事情,不仅不容易,很
多时候还非常枯燥;即½是自己写的代码,有时隔一段时间再回顾也会不知所云。很多人在
自己的编码生涯中½或多或少有过一些阅读代码的经历,
有自己的一些方法,
½也仅仅是一
些个人实践而已,缺乏对整½的把握,经常是只见树木不见森林(很多时候仅仅½看到一小
部分树木)
。为了在学习的过程中少走一些弯路,业界代码阅读与质量提升方面的开宗明义
之½——Diomidis
Spinellis
教授所撰写的两部经典之½《代码阅读》和《代码质量》无疑是
推荐给每½从业人员的理想读物。
这两部曾荣获美½
Jolt
½件开发震撼大奖的½品,
½响了
一代程序员,是相关领域中的经典名½。
我阅读了两部书的译稿,
并非常欣喜地将它们推荐给每一½读者。
该书译者和编辑们严
谨、认真的工½½得本版最大程度地还原了½者的原意,相信经由他们的辛勤努力,必将½
为广大读者献上一道惊艳的½½。
欧阳修说:
“立身以立学为先,
立学以读书为本。
”衷心希望广大读者借由本书立学解惑,
提升自我。
李战怀
于
2011
岁末
译 者 序
½件产业无疑是本世纪最具广阔前景的新兴产业之一。
在该领域,
中½拥有数以千亿计
的市场规模,更有无数富有才华和热情的年½从业者。½为一种“无污染、微½耗、高产值
且劳动力密集”的产业,½件产业不½½大幅度提高½家整½经济运行效率,而且自身也可
以½成庞大规模,拉升½民经济总½水平。进入新世纪以来,中½的½件产业迅猛发展,成
果固然可喜,½我们也应清醒地看到中½½件产业同美½、日本、印度等½件强½之间的差
距。随着信息技术的发展,½件产业将会成为衡量一个½家综合½力的标志之一。因此,发
展和扶持½件产业,
是一个½家提高½家竞争力的重要途径,
也是参与全球化竞争所必须占
领的战略制高点。为鼓励和促进½件产业的健康、可持续发展,½务院先后印发了《鼓励½
件产业和集成电路产业发展的若干政策》 《进一步鼓励½件产业和集成电路产业发展若干
和
政策》两项通知,以及《½务院振兴½件产业行动纲要》等纲领性、指导性文件,力求在产
业政策、人才培养及其他相关配套等各方面½成合力,共促中½½件产业大发展。
½为推进中½½件产业大发展战略布局中的重要一环,½件人才培养始终是万业之基、
重中之重。为此,教育部于
2001
年在全½顶尖高校中组织成立了
35
所½家示范½件学院。
½家示范½件学院本着“开拓创新、改革示范、育人为本、质量为先、面向产业、走向世界”
的理念,以培养“½际化、工程型”人才为目标,在½件人才培养的大路上披荆斩棘、一路求
索,
先后为½家输送了十万½名高素质½件人才,
摸索出了一整套行之有效的½件人才培养
½系,为中½½件产业发展提供了源源不断的动力。
时光荏苒,2011 年,½家示范½件学院成立
10
周年庆祝大会在北京隆重举行。包括½
家部委领导、教育界和½件企业界的耕耘者们、外½专家学者在内的业界精英济济一堂,共
同庆祝这承½½了无数光荣与梦想的历史时刻。
½为½家示范½件学院的优秀毕业生代表,
我
也有幸参加了此次盛会。
会上有关领导及专家充分肯定了½家示范½件学院的办学成果,
同
时寄予中½½件产业和½件教育事业以厚望。
科教可以兴½,中½½件产业的可持续发展,关键在于人才。要培养出更多高质量、½
际化、工程型的½件人才,高校与社会同样承担有艰巨而光荣的½½。我们既要继续发扬和
巩固已经取得的成果,
推进中½½件人才培养的科学化½系建设,
同时也应看到中½同世界
上其他½件强½在½件教育方面的差距,取人之长、以补己短。½为½今世界上的头号科技
强½和世界½件产业的领跑者,
美½在½件人才培养方面同样有许多可贵的经验和成果值得
我们借鉴。其中,关于½件技术的许多真知灼见已经凝聚成了一本本经久不衰的科技专著。
½为一名技术½家、译者,我们一直希望同中½的
IT
出版业一道将这些承½½着先进思想的
著½介绍给½人,
若½以这种方式为中½½件产业和½件教育事业略½绵薄之力,
吾辈也必
将倍感欢欣。
由½际知名的
Addison-Wesley
出版社推出的“高效½件开发系列”丛书为现代½件开发
的方方面面提供了专业的建议和意见。
收½在该系列中的书籍本本½是技术方面声名卓著的
½½,这些书籍的½者在创½时煞费苦心,力求½品篇幅适中、易于阅读,同时保证½品的
评论