![]()
目录 序 新版前言 第一版前言 提示1:关注你的技艺 提示2:思考!思考你的工作 第1章 务实的哲学 1 人生是你的 提示3:你有权选择 2 我的源码被猫吃了 提示4:提供选择,别找借口 3 软件的熵 提示5:不要放任破窗 4 石头做的汤和煮熟的青蛙 提示6:做推动变革的催化剂 提示7:牢记全景 5 够好即可的软件 提示8:将质量要求视为需求问题 6 知识组合 提示9:对知识组合做定期投资 提示10:批判性地分析你读到和听到的东西 7 交流! 提示11:英语就是另一门编程语言 提示12:说什么和怎么说同样重要 提示13:把文档嵌进去,而不要栓在表面 第2章 务实的方法 8 优秀设计的精髓 提示14:优秀的设计比糟糕的设计更容易变更 9 DRY——邪恶的重复 提示15:DRY——不要重复自己 提示16:让复用变得更容易 10 正交性 提示17:消除不相关事物之间的影响 11 可逆性 提示18:不设最终决定 提示19:放弃追逐时尚 12 曳光弹 提示20:使用曳光弹找到目标 13 原型与便签 提示21:用原型学习 14 领域语言 提示22:靠近问题域编程 15 估算 提示23:通过估算来避免意外 提示24:根据代码不断迭代进度表 第3章 基础工具 16 纯文本的威力 提示25:将知识用纯文本保存 17 Shell游戏 提示26:发挥 Shell 命令的威力 18 加强编辑能力 提示27:游刃有余地使用编辑器 19 版本控制 提示28:永远使用版本控制 20 调试 提示29:去解决问题,而不是责备 提示30:不要恐慌 提示31:修代码前先让代码在测试中失败 提示32:读一下那些该死的出错信息 提示33:“select”没出问题 提示34:不要假设,要证明 21 文本处理 提示35:学习一门文本处理语言 22 工程日记 第4章 务实的偏执 第5章 宁弯不折 第6章 并发 第7章 当你编码时 第8章 项目启动之前 第9章 务实的项目 跋 参考文献 练习的参考答案 译者跋 序言 序 我还记得 Dave 和 Andy 第一次在推特上谈论这本书 的新版的那一刻——这可是一条大新闻。在编程社区,所 见之处都是对这条大新闻兴奋的回应,人们的期待塞满了 我的信息流。二十年过去了,《程序员修炼之道》这本书 的地位不逊于当年。 承载这样一段历史的一本书,能引起这样的反响,本 身就说明了很多问题。为了写这篇序,我有幸在尚未出版 前阅读了本书,读后我就明白了它为什么会引起这么大的 轰动。本来,一本书被冠以技术图书之名,给人的印象应 该是不太好的。因为技术图书常常令人生畏——充斥着深 奥的词汇、晦涩的术语和令人费解的例子,不经意间就会 让你觉得自己很愚蠢。而且,作者越有经验,就越容易忘 记初学者在学习新概念时的感觉。 Dave 和 Andy 的作品,却能透出那种只有刚刚学到 这些课程的人才会有的兴奋感,尽管他们已有几十年的编 程经验,却战胜了写出这种感觉的挑战。他们不会居高临 下地指指点点,不会假定你是个专家,甚至不认为你已读 过本书第一版,仅仅把你当成想要变得更好的程序员而已 。他们不惜用整本书的篇幅来帮助你达到目标,一步一个 脚印。 公平地说,在这方面,他们在过往已经成绩斐然。最 初的本书第一版,包含了许多具体的例子、新想法和实用 的技巧,可以帮助你修炼编程所需的“肌肉”和“大脑” ,这些东西到今天仍然适用。但是,这次在新版图书中, 又有了两项改进。 第一项显而易见:删除了一些较老的引用内容和过时 的例子,增补了大量新鲜、现代的内容。循环不变式或构 建机这样的例子已经看不到了。Dave 和 Andy 保留了第 一版书中的重要内容,以确保相应的课程依然有效,而且 读者也不必受旧示例的干扰。对于像 DRY(不要重复自己 )这样的旧思想,上面的灰尘已被掸去,并且涂上了一层 新油漆——这样做真的让其熠熠生辉。 而第二项,才是这次新版图书发布真正令人兴奋的地 方。在写完本书第一版后,他们有机会思考自己想要说什 么,想让读者获得什么,以及读者是如何接受这些信息的 。他们得到了这些课程的反馈,也看到了读者在哪里被卡 住、有什么需要改进,以及哪些内容被误解。在这本书通 过全世界程序员的双手和心灵传播的二十年间,Dave 和 Andy 研究了这些回应,并且形成了新的想法和理念。 他们认识到自主权的重要性,并且意识到,相比大多 数其他专业人员,开发者或许更能为自己做主。他们以简 单而深刻的启示开始这本书:“人生是你的。”这唤起了 我们自己的力量,它就蕴含在我们的代码库、工作和职业 生涯中。这也为本书的其他内容定下了基调——它不仅仅 是又一本充满代码示例的技术图书。 这本书必定会在摆满各种技术图书的书架上脱颖而出 ,因为它理解身为一名程序员到底意味着什么。编程关涉 诸事——尽量减少未来的痛苦,让队友更轻松,做错事情 后能够重新振作起来,养成良好的习惯,以及理解工具集 。编程只是程序员世界的一部分,而这本书探索了整个世 界。 我在思考编码之旅上花了很多时间。我不是从小就开 始接触编程的,大学里也没学过编程课。可以说,我的青 少年时光并没有花在“摆弄”科技上,直到二十来岁的时 候才进入了编程的世界,因而亟须想明白一件事情:成为 一名程序员意味着什么。编程社区与我曾经身处的其他社 区非常不同。其独特之处在于,人们无不醉心于学习和实 践,这既令人生畏,又让人耳目一新。 这对我来说,真像进入一个全新的世界。就算去到一 个新城镇,也有必要了解邻居、挑选杂货店、找到最好的 咖啡店。我花了一段时间来了解地形,找到了最有效的路 线,避开了交通最繁忙的街道,并且知道了什么时候交通 可能会出问题。等到天气变化,我又要去置办应季的新衣 。 来到一个新城镇的头几周,甚至是头几个月,可能会 很害怕。如果有一个已经在这里住了一段时间的邻居,而 且他知识渊博又友好,那不是再好不过的事情吗?谁能带 你四处参观,谁能领你去那些咖啡店?当然是一个在当地 待了足够长时间的,了解当地文化、当地脉搏的人。这样 你不仅有家的感觉,还能成为一个同样有贡献的成员。 Dave 和 Andy 就是这样的邻居。 一个准新人,更容易对成为程序员的过程,而不是对 编程的行为不知所措。因此,必须对整个心态做一次切换 ——改变习惯、行为和期望。仅仅知道如何编程,并不会 让你成为一名更好的程序员,在这个过程中必须经历有意 识和深思熟虑的实践。好在现在有了这本书,可以有效地 指导你成为更好的程序员。 但不要搞错了——这本书不会告诉你编程应该是怎样 的,它并没有使用那种哲学或审判的方式,它只是简单、 明了地告诉你,什么是务实的程序员——他们如何操作、 如何处理代码。作者让你自己决定是否想成为其中的一员 。如果你觉得不适合,也没有人会怪罪你。但如果你决定 成为其中的一员,作者就是你的友好邻居,会陪伴左右、 为你指路。 Saron Yitbarek 内容推荐 《程序员修炼之道》之所以在全球范围内广泛传播,被一代代开发者奉为圭臬,盖因它可以创造出真正的价值:或编写出更好的软件,或探究出编程的本质,而所有收获均不依赖于特定语言、框架和方法。时隔20年的新版,经过全面的重新选材、组织和编写,覆盖哲学、方法、工具、设计、解耦、并发、重构、需求、团队等务实话题的最佳实践及重大陷阱,以及易于改造、复用的架构技术。本书极具洞察力与趣味性,适合从初学者到架构师的各阶层读者潜心研读或增广见闻。 |