[读书笔记-代码大全]前言

周杰伦有一首歌叫做《牛仔很忙》,蠢爸爸小星也有一首歌叫做《业务员很忙》,我既不是牛仔也不是业务员,但我从事的工作也很忙,我是一个程序员。扪心自问,似乎近几年都没有完整看完一本书的经历了。俗话说:读书,要先把书读厚。像《代码大全》这样“重”量级的计算机读物,900多页的个头,我的天啊!如果想把它放在书包里作为“口袋书”,以方便随时随地拿出来阅读,的确是个愚蠢的做法;但如果放在公司的话,我又担心它会沦为午休时候的枕头……(扯远了 -_-#)。

在前言之前,还有若干页中外读者对该书的赞誉。在众多的赞誉中,我留意到曝光率最高的,是n多带“最”字的词汇,如“对我影响最深的”,“我见过的最好的”,“最易懂的”……,其中Richard Mateosian的赞誉是我觉得最具有“煽动性”的:

Richard Mateosian:假如你期望成为专业程序员,这将是你投资35美元能得到的最好回报。不要只是看看这个书评,赶快冲出去买一本回来!McConnell声称此书意在拉近业界大师的知识与一般商业实践之间的距离……令人称奇的是他做到了。

中文版的屁股后面写着本书的定价是:98.00元,由此可以看出中文版的售价是要比英文版低的,为此我应该感恩于我身处的社会大环境。“不要只是看看这个书评”这句话无形之中使我感到汗颜,由于受到开篇一些煽情文字的影响而一时冲动出手买下某书,入手后尘封于书柜或者不知去向的故事我也记不清在自己身上重演过几遍 了,可见在书籍编排中采用这种排兵布阵的确是有效的,印象中似乎本土的出版商们都比较喜欢来这一手,英文原版好像没搞这种玩意儿,也有可能是第二版的关系吧。但无论如何,希望在后面的日子里,我能够坚持把《代码大全》看完,并且不会有“见面不如闻名”的感觉。

以我目前对《代码大全》的理解程度,贸然对其作出评价绝对是一种可耻的行为,所以在前言部分我只打算做一下流水账记录,针对书上的叙述谈谈自己想法。

在过去的五六年间,自己刚好也经历了从学生(Student)到自学的程序员(Self-Taught Programmer),再到成为开发团队中经验丰富的程序员(Expreienced Programmer),再到现在的技术领导(Technical Leads),这么一个过程,感慨之余,我不得不遗憾地承认这一路走来的经历,正好应验了书中所说的:

虽然近年来前卫的软件开发实践迅速发展,但普通的实践手段并没有太大变化。很多程序的开发仍然是漏洞百出、迟于交付并且超出预算还有很多根本就无法满足用户的需求。

就在前一阵子,测试的同事才刚刚和我分享过项目测试过程中的一些数据:目前测试团队已经针对产品设计了两万条左右的测试用例,而已发现的Bug累计也是两万多个。身为开发者中的一员,我只能抱歉地承认这组数据所暴露的问题是相当令人尴尬的,因为任何人都可以拿着这个来挑战我:“你们的测试人员平均每写一条用例就能发现一个产品的Bug?!你们的开发人员怎么这么烂啊?”看来我目前的处境与Who Should Read This Book(谁应当阅读本书)中所描述内容是相当对口的。

另外书中还谈到:

其实,内行的程序员们所用的那些强大有效的编程技术并不神秘。但是这些内行人士面对手头日复一日紧张冲刺的项目,几乎没有谁花时间和大家分享他们所学到的知识和技能。

这一点也相当能引起我的共鸣。结合我的亲身体会再补充一点,那就是“招式花哨而内力不足”。几年下来,各种项目开发过程中的疑难杂症,妙方偏方的确是知道了不少,但这些工作上(包括做一份需求,解决一个Bug,参加一次讲座,阅读一篇技术文章之后)的所得,往往具有随机性,是杂乱的。对于有志成为技术领导(Technical Leads)的人来说,想完全依靠这种层面的积累来达到技术影响力的大幅度提升,其实是不现实的。在这个阶段,修炼内力显然要比学习招式更为重要,这里所说的修炼内力也就是书中所说的对知识的提炼。

在此我要特别声明一点:以上文字纯属个人愚见和借题发挥,未必是作者的本意。谦虚和幽默乃中华民族的传统美德,也是优秀程序员必备的两种素质,这些从人的说话谈吐就可见一斑。在前言当中,软件行业大师级人物的语言风格也给我留下了比较深刻的印象,且看以下几处文字:

  • 想完全获得在本书中看到的这些信息的另外途径只有一条,那就是通读堆积如山的书籍和成百上千本技术期刊,还得再加上大量的实际经验。即便你把这些事情都做到了,本书仍然会对你很有益处,因为它把所有这些资料都集于一处,便于查阅。
  • 无论你是何种背景,本书都能助你在更短的时间内写出更棒的程序,还不会那么头疼。
  • 正因为本书撷取了实践与研究两者的精髓,它所介绍的这些技术将经久不衰,受用多年。

这些文字把《代码大全》“捧”到了一个非常高的位置上去,同时也把读者对该书的期望带到了一个“小小的高潮”,乍看起来还有点“黄婆卖瓜,自卖自夸”的嫌疑,不过现在下判断还为时尚早,是否真如所言还有待在后面的阅读过程中慢慢验证。最后再摘抄几处个人颇为认同的有趣观点,与大家分享:

  • 有些软件书籍,其中精髓部分的净重也就1克,却注入了重达10克的水分。
  • 从示例中我最能学到东西,我想其他程序员也该可以通过这种方式学得更好吧。
  • 学习并掌握不止一门语言通常是专业程序员职业生涯的分水岭。一旦一名程序员意识到编程原则是超越特定语法的东西时,通往能够实质地改善编程质量并提高工作效率的知识的大门也就向他敞开了。

另外文中对于软件构建的话题常被忽视(The Topic of Construction Has Been Neglected)的论述也是比较深刻的,由于在正文第1章也有谈到构建的概念问题,个人认为这个话题属于后话,此处暂时不表。

最后引用作者的话对《代码大全》进行一句话的概括,并以此作结,那就是:

我把本书构思成关于代码构建活动的完整探讨——一个程序员给其他程序员写的书。

时间: 2024-10-02 11:39:26

[读书笔记-代码大全]前言的相关文章

[读书笔记-代码大全]第1章 欢迎进入软件构建的世界

"构建"既是名词,也是动词,但在现实生活中,最好不要把它当作形容词,比方说"您真'构建'的".(Sorry,忍不住又在扯了 –_-#) 我对本章内容的概括是:在软件开发过程中,构建活动是一个程序员最最应该关注的活动.至于W-H-Y,Why,作者用了一章的篇幅来阐述这个问题. 在本章的开头(Page3的1.1什么是软件构建),可以得知研究者把软件开发过程中的各种不同的活动(acitivity)归纳为以下11种: 定义问题(problem definition) 需求分

<读书笔记> 代码整洁之道

概述 1.本文档的内容主要来源于书籍<代码整洁之道>作者Robert C.Martin,属于读书笔记. 2.软件质量,不仅依赖于架构和项目管理,而且与代码质量紧密相关,本书提出一种,代码质量与整洁成正比的观点,并给出了一系列行之有效的整洁代码操作实践,只要遵循这些规则,就可以编写出整洁的代码,从而提升代码质量. 3.该书介绍的规则均来自于作者多年的实践经验,涵盖从命名到重构的多个编程方面,具有很好的学习和借鉴价值. 4.习艺要有二:知和行.你应当学习有关规则.模式和实践的知识,穷尽应知之事,并

『重构--改善既有代码的设计』读书笔记----代码坏味道【3】

星期六了,适当出去放松了下,回来继续我们重构的话题.今天是坏味道[3]了,很多朋友跟我私信,叫我把坏味道出完,再出手法.其实这是有道理的,很多时候,"发现"远比"怎么做"重要的多.就拿设计模式来讲,GoF里面的设计模式相信有很多人都了解过.具体的设计模式应该怎么实现啊相信有很多人都背的滚瓜烂熟,但问题的难点往往在于你应该什么时候用这个设计模式.重构也一样,手法步骤都是死的,关键在于应该发现什么时候应该重构.所以,我还是决定继续出坏味道,把坏味道全部出完我们再去学手法

《构建之法》第四&amp;十七章读书笔记

 <构建之法>第四&十七章读书笔记 一.         前言 再次阅读<构建之法>,愈发被其中生动有趣的举例吸引.作为一本给予软件工程学生的书籍,其不以枯燥的理论知识为核心,而是基于对知识和方法的引导.本次研读的这两章内容主要涉及了代码规范,两人结对与多人合作的团队方面等相关知识,从其中逐渐明白与人相处作业等方面的技巧与艺术.以下是我对这两章节的思考与疑惑. 二.        第四章<两人合作>. 本章主要涉及代码规范,极限编程,结对编程,两人合作不同阶段,

表驱动法 -《代码大全》读书笔记

表驱动法是一种编程模式,从表里面查找信息而不是使用逻辑语句(if-else-switch),当是很简单的情况时,用逻辑语句很简单,但如果逻辑很复杂,再使用逻辑语句就很麻烦了. 比如查找一年中每个月份的天数,如果用表驱动法,完全不需要写一堆if-else-语句,直接把每个月份的天数存到一个数组里就行了,取值的时候直接下标访问,最多针对二月判断一下闰年.这么算的话,平时用的的HashMap,SparseArray也可以算是表驱动 表里可以存数据,也可以存指令,或函数指针等都可以. 示例 看一个例子,

代码大全读书笔记 - 开篇

说起来,<代码大全>这本书书名实在恶俗.在我推荐给展鸿的时候,他说"雾草,这名字看着就像天朝地摊那种XX全书一类的山寨书-" 是的,其实买这个书的原因就是京东买100减30,我买了10块钱的东西,凑了一下单,书到手之前还以为是代码清单,或者以前ACM模板一样的书,甚至买来的一个月里面都拿来当枕头(足足10+cm厚). 这个周末偶然的翻开,才发现,世界上竟然有如此精彩的书,而且很多东西讲的虽然是软件项目,但给了我很多引申到其他东西上面的灵感.很多地方我读到之后,都会兴奋的心跳

《代码大全》读书笔记

初读云风大大的读书笔记,收获蛮多,云风大大的读书笔记只记录了1到442页的.我直接读了400页之后的,也做了后续的读书笔记.<代码大全>第二版确实是一本好书,每个人读了能领悟的东西并不一样,本读书笔记是博主略有领会的东西,分享出来是希望没读此书的人有所收获,要是能引起你对<代码大全>的兴趣,去通读本书的话就更好了. 另附云风大大的1到442页读书笔记链接:http://blog.codingnow.com/cloud/CodeComplete P439 短路求值,更好的办法是使用嵌

《代码大全》读书笔记——week4

<代码大全>代码高效规范部分读书笔记 前三周看的是C++/C高质量编程,将全书看完后,为了进一步了解与提高编写的代码的规范性与高效性,更深刻的了解相关知识,因此,我特地挑选了代码大全中与之前所读的C++/C高质量相类似的第八章与第十一章进行阅读,与之前三周所学进行对比,互为补充,加深自己的印象以及理解. 第八章:防御式编程 主要思想:子程序应该不因传入数据错误而遭到破坏,哪怕是由其它子程序产生的错误数据 8.1 保护程序免遭非法数据的破坏 检查所有来源于外部的数据的值:检查子程序所有输入参数的

《代码大全2》读书笔记(四)

接下来的几个章节讲述几种基本的逻辑结构. 这次读书笔记相对短一点,因为我慢慢发现这本书真的细节太多了QWQ看得太快了完全记不住. 第十四章 组织直线型代码 14.1 必须有明确顺序的代码 对于具有明显的顺序关系的代码,应该使用顺序结构. 对于隐含的顺序关系,应该: 去除不合理的依赖关系(如不应该在CalculateExpense里对某个变量进行初始化) 将依赖关系明确体现在__子程序名__或__子程序参数__上. 将依赖关系体现在__注释__中. 用assert或错误处理代码检查依赖关系. 就个