《CODE COMPLETE 2》读后感
在读了《代码大全2》后的第一感觉是它不愧是软件工程类教材中的经典。具体的有以下几个原因:
1、他不局限于某种具体的软件开发,或在某种具体的环境下开发,是软件工程的通用教材。
2、书中内容的全面程度让你难以想象,几乎在软件工程中遇到的问题书中都有提及。
3、问题的解决方法很详细,提出、发现问题后大多数问题都给了不止一种的解决方法。
4、从基础到高端,书中的内容有显而易懂的基础,也有到工程才会遇到的问题。所以很适合读者一步步提高自己。
在读《代码大全》的同时我还参考了《移山之道》,对于我们现在所处的软件工程课,《移山之道》的VSTS开发很贴切,具体的对VS2012的操作相当有用。
《代码大全》全书的内容相当的多,也讲得很细致。书中有些部分我只是囫囵的阅读了一番,因为那部分的内容,我还不曾遇到,没什么感觉,只留了个印象。但很多部分是我亲身体验过的,深有触动,那些是十分重要的经历。
在阅读《代码大全》时,我肯定不是每点都懂得很详尽,尽管书已经讲得尽量细致了。
下面是我在思考的一些问题:
1、书中有一部分在研究各种命名规则,针对不同的语言,有许多的潜在的命名规则,这使得熟悉一种命名规则的人,看到另外一种命名规则的代码会想很多,或者误解。那么各个语言潜在命名规则是怎么形成的呢?既然存在,那么必定是有优点,但有不是覆盖了所有语言,说明又有缺点;既然如此,为什么没有人出来统一一种放之四海而皆准的命名法则,或者,根据数学证明没有一种完美的命名法则。世界上有很多标准制定机构,这里是否可以来一个类似的呢?(匈牙利命名法,曾经尝试过,但是失败了;我认为是没有进过证明或确认他是最优的就推广,他更多的是想统一命名规则,而不是优化命名规则)
2、这个问题是在实践中遇到的,当我在阅读android的源代码,一个应用程序的启动过程应该走的正常路径放在了错误处理上,在源代码的注释上说的是/*清空之前的堆栈*/但是再代码大全中很明确的说到:正常的事件千万不要放到异常处理中进行,那样会发生很大的开销,而对于android这样的手机系统,开销的庞大是会对它宣判死刑的,那么他们什么要这么做呢?是特例?是书错了?还是谷歌的程序员错了?
3、在产品中应该保留多少防御式代码中,我认为书中没有基于软件的类型来确定是否要保留检查细微错误的代码。如果是软件的正确要求极高,那么就连检查细微错误的代码都不应该去掉。毕竟这是软件类型决定的。
4、我们很多时候写出来的代码可读性都不强。这一直很困扰我,为什么有些人写的代码就是让人易懂,为什么他写的函数就能在工程中多次用到,为什么大神写的代码阅读起来有种很“爽”的感觉。这就涉及到了代码改善和重构的概念,重构过后,确实可以让代码好看很多,让人易于理解,多次在工程中利用,减小编码量。但是,有很多不经过重构,也很优秀的代码。他们是怎么做到的。
5、学过了一系列课程后,我们都理解到注释很重要,但是我么要给的是什么样的注释呢?
应该尽可能详细?还是给出重要部分?是给出详细的实现过程、算法?还是写出思路,然后让阅读者自己去看代码实现?需要一个答案。