昨天终于把《代码大全》这本900多页的大部头“啃”完了,很有成就感,所以写篇博客梳理梳理学到的知识,做下总结。
管理复杂度
软件开发是一项很复杂的工程,面对大型的项目,没有人能清楚地知道整个项目的细枝末节,一个小小的bug可能就要耗费你数小时甚至一整天的时间,而代码如果是别人写的,这个过程可能就会更加的漫长和痛苦。即便不是别人写的,你也很有可能不认识自己一个月前写过的代码。人的大脑是有限的,你不可能同时将五六个密切相关的类同时装进你的大脑并思考改动其中的一个会对其他几个都产生怎样的影响,如果这些类之间的关系是一团乱麻,那么改动其中任何一个都将是非常困难的。套用我同事很形象的说法,你的大脑“内存溢出”了!
所以,管理复杂度便是软件开发过程中非常重要的一个环节,这也是《代码大全》这本书中讨论得最多的一个主题。
管理复杂度是一项很艰巨的任务,大到框架的设计,子系统的划分,小到函数的内聚性,参数的个数,变量的命名,都牵涉其中。一个复杂度小的系统能让你专注于系统的某一点工作,而不用操心你的修改会对系统的其他部分产生怎样的影响。
《代码大全》这本书便从子系统的分割,类的设计和接口的定义,函数的编写,变量的作用域和命名,代码的逻辑,循环控制语句的使用等等,一层一层的讨论下来,总共花了十五章的篇幅!
提高质量
除了管理复杂度,这本书还讨论了一个主题,便是如何提高软件开发的质量。这里的质量包括几个方面,需求的质量(详细的说明),开发过程的质量(对需求变更的控制,增量集成),代码的质量(代码审察,结队编程),测试的质量(单元测试,覆盖率)等等。
作者还提到,过早的对代码进行优化对项目的进度其实是有损害的,然而偏执的程序员总是对优化上瘾,并为此感到自豪,一个好的解决办法是,profiling! 很多优化有时候是程序员想当然的,如果不能对优化前后进行客观的测量对比,那么就不要优化!
代码是写给人看的
这也是这本书中很重要的一个主题,写给机器看的代码很容易,谁都会写,你写得再难看,机器也能运行。但是写给人看的代码就难了,你写代码时要考虑到这个代码是要给你的同事来修改的,或者你自己一个月后也可能会重新维护一下。
之前讨论的管理复杂度是这个主题的一方面,除此之外,良好的注释,详细的代码规范也很重要,它降低了沟通的成本。
关于规范的制定可能会引起争执,缩进该用空格还是制表符,大括号写在末尾还是另起一行,每个人都有自己的喜好,毕竟萝卜白菜各有所爱嘛,然而这些争执其实是没有必要的,制定规范不是选美,目的是要能让你专注于代码的逻辑,减轻阅读和理解代码的负担。
check list
《代码大全》在每一章后面都有一个check list,帮助你检查自己的工作,很适合把它放在办公室电脑旁,随时参考。
《代码大全》读后感
《代码大全》热门书评
-
堪称经典的力作
32有用 2无用 想飞的猫 2009-11-11
想要学习软件开发的都应该去读这本书。书里面有很多一般很难接触到的最佳实践的东西。很多时候,这些也就是新手和高手之间的区别。当你知道了很多这些东西之后,也就很难有人再去叫你菜鸟。我认为本书最值得去读的是中间那几章很详细的细节方面的描述,如变量命名之类。我也很讨厌死板的软件工程教条,但我不反对软件工程。...
-
软件构建的集大成者
25有用 2无用 草根程序员 2010-03-04
初见《代码大全》,还是该书的第一版,只从书名上看,还以为都是一些代码的示例。觉得还有很多的书需要读,这种实用主义的技巧书,可以先放一放,于是与之失之交臂。及至后来,才发现原来被中文书名给骗了。只要将目录浏览一过,就会发现,这本书基本覆盖了软件构建的全过程,从需要分析、系统架构设计到具体的编码规范、编...
-
代码大全中英文要点
22有用 3无用 rocedu 2006-09-19
《代码大全》是一本不多见的值得多次阅读的好书,在《代码大全》一书中,每一章后面都有这一章的要点,略读这些要点中我们就可以了解到我们已经掌握了哪些知识,哪些知识还没有掌握,阅读,重读时就有重点了。下面列出这些要点,供没有购买这本书的同学(同仁)参考,或可用作决定“是否应该买这本书”的参考。第1章 欢迎...
-
看过最好的计算机书籍之一
12有用 1无用 小疯叔 2008-10-24
对于编程来说,借鉴成功的经验很重要,而这本书是无论新手老手都一定要读一读的佳作。 讲的比较显浅易懂,而很多宝贵的经验一一道出,很多时候看着看着都会兴奋的叫出来。  ...
-
时机
11有用 0无用 忘川 2009-08-10
这本书看的还是满早了,所谓的早是指买回来基本没放,一个月时间读完。有人说书非借不能读也,我个人是非常赞同的,一般的书我都是买回来几个月才想起来看。 这本书的内容不想多谈了,任何夸奖的形容词用在该书上都不过份。但其实我看书的时候,书...