读后感
《代码大全》是一本指导“代码构建”的书,指导我们如何写出优秀的代码,如何成为优秀的程序员。
这样一本900多页的大部头书,当我们基于既往的编程经验,在读每一个部分,每一个章节的时候,往往会对作者对软件构建的认知和思想,具体的、可操作的解决问题的办法及原因,由衷的理解和认同,感觉“就是应该这么做”。
这像一本定义“规范”的书,我们很容易就理解了,但是想完全按照它定义的来做的时候,大多数却忘记了。
当我囫囵吞枣一样,尽快的挑选着读了一部分的时候,和一些同事谈起这个问题的时候,曾经的看法是,这本书是需要重复读的,可能无法记住所有的规则,但是它对人的影响是潜移默化的。
后来又想,这个“潜移默化”肯定是有的,也是好的,但是仅仅靠“潜移默化”,可能还是处于一个低层次。
当我们无法准确讲出规范的时候,怎么能信心十足的让它指导我们的工作?
当团队协作的时候,无法用对规范的准确描述,用引经据典的出处,说服别人,如何在协作中教育别人,提高团队水平?
所以,还是需要领会,并记住。那么,如何做到这一点呢?
首先,思考一下,为什么那么易忘,除了重复度不够之外,更重要的原因似乎是方法出了问题。读了很多个章节(软件构建中的思想和规则),也就是在《代码大全》的世界里,有了很多个点,但没有把这些点从宏观上串起来,也就是没有形成面,所谓“皮之不存,毛将焉附”,没有骨架,血肉是附着不上去的,特别容易就掉下来。
所以,需要从宏观上,从整体上,理解、记住《代码大全》对于软件构建所定义的骨架,然后把每个章节的血肉附着上去,才能结实的组装起来,才不容易忘记。
这是一本值得没事的时候,就翻翻的书,技术的浪潮汹涌先前,编程的技法变幻莫测,有些书可以在非常非常长的时间内指导我们的工作,不褪色,《代码大全》就是这样一本书。
年轻时学过很多编程语言,大学里的Turbo C,工作中开始的ASP、VB、DELPHI、C++ Builder,到后来相当长的时间里使用C#,再到近几年使用Java,学习的Ruby,一直在变换着编程的技法,不是没有遇到过高人,实在是自己的悟性太慢,没有领会编程的真谛,并把大把的青春浪费在游戏上,浪费在编程无关的方面。
编程的技法,固然重要,需要熟练,并能快速解决问题;但编程真正重要的东西,是思想和境界,是数据结构,是并发,之后可以是基础框架;编程的进步,来源于多写高质量的代码,最好能参与开源工程并贡献代码,也来源于多总结,比如写技术文章。
Java生态,我们可以看这样几本书:《Java编程思想》、《深入理解Java虚拟机》、《Spring3.0企业应用开发指南》、《Spring Internals》、《Java与模式》,并熟练使用Linux,Java容器,Java IDE工具;看书的过程,学习的过程,都不是一蹴而就的,要有足够的耐心,投入充足的时间,三年有小成,五年可以进入专家行列。所以,在这么长的时间里,一定是自驱动的,兴趣驱动的,没有兴趣,是很难很难持续这么长时间的。
骨架
《代码大全》全书900多页,分为5个部分,35个章节。
第一部分,“打好基础”
分为4个章节,分别介绍了软件构建在软件开发中的地位,用现实中比较容易理解的问题类比软件研发(目的是更容易理解),前期充分准备的重要和必要性,如何对软件构建使用的语言、规范、框架等进行决策。
第二部分,“创建高质量的代码”
基础打好了(需求、产品、架构),开始进入软件构建的世界,从设计、类、子程序、编程方法角度,告诉我们如何创造高质量的代码。
第5章:软件构建中得设计;第6章:可以工作的类;第7章:高质量的子程序;第8章:防御式编程;第9章:伪代码编程过程。
第三部分,变量
从整体角度领会如何创建高质量的代码之后,开始进入构建的细节,首先从变量开始。
第10章:使用变量的一般事项,告诉我们怎么用变量,比如初始化、作用域等;
第11章:变量名的力量,本章是变量命名规范,告诉我们怎么对变量命名;
第12章:基本数据类型;
第13章:不常见的数据类型;
大部分公司的“编程规范”,都会对变量名进行部分约束,如果和本书冲突,应该先按照公司当前规定的来执行,并逐步推进成最好的方式。
第四部分,语句
组织语句,贯穿着构建的过程,这一部分先略过。
第14章:组织直线型代码;
第15章:使用条件语句;
第16章:控制循环;
第17章:不常见的控制结构;
第18章:表驱动法;
第19章:一般控制问题。
第五部分,代码改善
代码的改善,是一个贯穿整个软件生命周期的过程。开发者测试、调试、重构、调整,都是很必要的技法。
第20章:软件质量概述;
第21章:协同构建,本章描述的结对构建,可以仅当做一种思想,不具备现实操作性;
第22章:开发者测试;
第23章:调试;
第24章:重构;
第25章:代码调整策略 ;
第26章:代码调整技术。