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

杜修杏在博客园      2022-02-09     767

关键词:

周杰伦有一首歌叫做《牛仔很忙》,蠢爸爸小星也有一首歌叫做《业务员很忙》,我既不是牛仔也不是业务员,但我从事的工作也很忙,我是一个程序员。扪心自问,似乎近几年都没有完整看完一本书的经历了。俗话说:读书,要先把书读厚。像《代码大全》这样“重”量级的计算机读物,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章也有谈到构建的概念问题,个人认为这个话题属于后话,此处暂时不表。

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

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

《代码大全》读书笔记

   初读云风大大的读书笔记,收获蛮多,云风大大的读书笔记只记录了1到442页的。我直接读了400页之后的,也做了后续的读书笔记。《代码大全》第二版确实是一本好书,每个人读了能领悟的东西并不一样,本读书... 查看详情

读书笔记2-《代码大全2》

软工读书笔记2-《代码大全2》继上周阅读《人月神话》后对软工这门学科有了比较全面的认识,以及相关的一些管理规则等等,本周我打算开始看一些关于编程规则与技巧的书籍,于是我选择了这本《代码大全2》。这本书讲的... 查看详情

《代码大全2》读书笔记

接下来的几个章节讲述几种基本的逻辑结构。这次读书笔记相对短一点,因为我慢慢发现这本书真的细节太多了QWQ看得太快了完全记不住。第十四章组织直线型代码14.1必须有明确顺序的代码对于具有明显的顺序关系的代码,应... 查看详情

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

《代码大全》代码高效规范部分读书笔记前三周看的是C++/C高质量编程,将全书看完后,为了进一步了解与提高编写的代码的规范性与高效性,更深刻的了解相关知识,因此,我特地挑选了代码大全中与之前所读的C++/C高质量相... 查看详情

《代码大全2》读书笔记

第十一章变量名的力量(续) 11.5标准前缀 标准前缀由UDT(用户自定义类型)缩写与语义前缀构成。 >UDT缩写用很短的、标准化的缩写表示对象和变量的类型,通常不会表示编程语言提供的预制数据类型。如,scr屏... 查看详情

《代码大全》读书笔记——第九周

...而全,涉及到了软件开发的方方面面。这里简单记录一下读书的收获和自己的感悟。一.前期开发 需求第一由于需求是首先进行的活动,所以需求阶段引入的缺陷可能在系统中潜伏的时间最长,代价也更昂贵。确定需求也是... 查看详情

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

  对于书中提到的一点印象最为深刻,其实在《人月神话》也有提到,那就是:  软件设计与开发的核心就在于控制复杂度  这句话的核心其实包括几个问题:  软件开发的本质问题性难题是复杂度?  如何可以一定程序... 查看详情

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

《代码大全2》第8章:防御式编程    防御式编程的主要思想是子程序应该不因为非法的输入值被破坏,就好比开车时的防御式驾驶:你无法预估其他司机将会做什么,但你要采取措施保证当他人做出危险动作时自... 查看详情

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

“构建”既是名词,也是动词,但在现实生活中,最好不要把它当作形容词,比方说“您真‘构建’的”。(Sorry,忍不住又在扯了–_-#)我对本章内容的概括是:在软件开发过程中,构建活动是一个程序员最最应该关注的活动... 查看详情

读书笔记:codesample(代码大全)

最近工作比较闲,便把这个书读了一遍,感触良多,做一点笔记记录记录文章目录1.前言2.关于编码前2.1需求完全清楚了么?2.2需求复杂度评估清楚么?3.关于编码3.1系统功能设计清楚么?3.2类的设计3.3子程... 查看详情

javascriptjqueryhtml5node.js实例大全-读书笔记3

...、Node.js实例大全】JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记23.3响应鼠标动作图3-2的效果已经有了,须要鼠标来操作展示想看的照片。这就须要在对应的地方加上事件。3.3.1响应小照片单击动作在3.2.3的代 查看详情

读书笔记|《程序员的自我修养》-01前言(代码片段)

图片来自极客时间深入浅出计算机原理学习链接知识的意义理解链接将帮助你构建大型程序构建大型程序的程序员经常会遇到由于缺少模块、缺少库或者不兼容的库版本引起的连接器错误。除非你理解连接器是如何解析引用、什... 查看详情

第二周读书笔记《构建之法》(代码片段)

构建之法读书笔记#wmd-previewh1color:#0077bb  构建之法读书笔记沈三景PB15061249软件工程读书笔记 前言本周阅读了构建之法的四、五两个个章节。这三个章节主要讲述了代码规范、结对编程、团队模式、开发流程。 第... 查看详情

《高性能mysql》读书笔记(代码片段)

文章目录前言MySQL架构与历史MySQL逻辑架构连接管理优化与执行并发控制锁粒度表锁行级锁事务隔离级别事务日志性能优化简介通过性能剖析进行优化理解性能剖析剖析MySQL查询慢查询日志pt-query-digest优秀资料慢SQL定位分析选择优... 查看详情

第四周读书笔记《构建之法》(代码片段)

第四周读书笔记《构建之法》#wmd-previewh1color:#0077bb  第四周读书笔记《构建之法》沈三景PB15061249软件工程读书笔记 前言本周接着读了构建之法(上周读了《程序员的修炼之道》)的第六、七两个章节。 第六章敏... 查看详情

nginex完全开发指南读书笔记-前言

  一开始接触的编程语言是VF,那是一种可视化编程语言,所谓的可视化,就是运行结果能直接看得到的,非常直观,便于调试,适合刚刚接触编程的新人学习。当时学得懵懂,半知半解,就是感觉程序非常神奇,常常几句代... 查看详情

读书笔记(代码片段)

前言  这个星期我仔细阅读了《构建之法》的第四章与第十七章,感触颇深,学习了很多,在此提出自己的问题和部分看法。  第四章两人合作 P74注释  注释(包括所有源代码)应该只有ASCII字符,不要... 查看详情

javascriptjqueryhtml5node.js实例大全-读书笔记1

技术非常多。样例非常多,仅仅好慢慢学,慢慢实践。!如今学的这本书是【JavaScript实战----JavaScript、jQuery、HTML5、Node.js实例大全】第3章用JavaScript实现的照片展示构建软件设计的方法有两种:一种是把软件做得非常easy以至于明... 查看详情