《代码大全2》阅读感想

我选择阅读的是《代码大全》第二版这本书。

第一眼看到这本书的直观感受是:这也太厚了点。不过它的厚度或许也说明了它的思想的深度和广度。我是先翻了一下前言和目录,感觉讲的东西确实挺多的,也挺细致的。

这本书我现在还在看,这么厚的一本书十天半个月自然是很难看完的,我觉得也没必要一下子看完,好书是要慢慢品的。下面,对我阅读的几章做一下总结:

1个人性格

查看目录后,我发现我对 “个人性格”(第33章)很感兴趣,然后最开始也是看的这部分。作者主要介绍了几种与编程最有关系的几种性格:谦虚、求知欲、诚实、创造性和纪律,以及高明的偷懒。我是一口气把这部分阅读完的,第一次看专业方向的书籍有种看散文杂文的感觉。

举例来说,作者在强调代码的可读性时这样写道:

”我曾见过最糟糕的代码,其作者不让任何人看懂她的程序。最后,她的上司威胁要解雇她,如果她还不合作的话。她的代码没有注释,变量名尽是些x,xx,xx1和xx2之类的东西,而且还都是全局变量。上司的老板却以为她是个高手,因为她能很快改正错误。其实正是其低劣的代码质量给了她表现纠错能力的大量机会。”

我觉得这段话简直就是一篇微小说,写的有趣又真实。作者的语言风格也是很平易近人的,所以书很好读,一点都不晦涩难懂。

“编程狂人”一节前面那段引述:

“如果你还没有对某个程序花费至少一个月的时间——一天工作16个小时,其余8小时也睡得不安稳,老是梦到它,为解决“最后错误”连熬几夜——你就算没有编过真正复杂的程序,你也不会感受到编程中最激动人心的东西。

——Edward Yourdon”

作者接着写的是这样的一句话”这种对编程的痴迷简直是胡闹”。这个和我的第一个问题有关——

编程人员是不是应当以编程为第一位,牺牲睡眠也是值得鼓励的?

我当然知道这算不上是一个问题,个人习惯,因人而异嘛,没什么好说的。我其实很尊重那些熬夜编程的人,首先这是个人的选择,其次这其中肯定是有着对编程的浓烈的兴趣的。看到作者的这段话,感觉也没必要因为没有彻夜奋战编程而质疑自己对于编程的热情。

2布局与风格

这是关于“布局与风格”(第33章)的一些总结和思考。

在“数据声明的布局”一节中,作者强调了3点:

每行只声明一个变量、变量声明应尽量接近其首次使用的位置以及合理组织声明顺序。

后两点我也十分赞同,但是对于第一点,我觉得还是有失偏颇。同样意义的变量放在一行声明也无可厚非吧,而且还节省版面。

另外,作者在第758页也提到了他关于赋值语句等号是否对齐这一问题的看法的转变,有些问题的看法是会根据实践经验的增加而发生改变的。或许我以后代码写多了看法也会变,同理,作者应该也是这样。

在“好布局有什么用”一节中提到的括号使用风格:

for (…)

{

}

  以及

  for (…)  {

  }

我之前是偏向于后一种,现在却喜欢前一种了。有的时候也会想:程序布局也需要重视吗?这是我的第2个问题,和节标题表达的意思差不多。当然,答案是是的。

特别喜欢作者在这节最后的一段话

“这件事情连同上面提到的研究,都表明结构能帮助高手去感知、理解和记住程序的重要特性。编程高手通常会恪守自己的风格,即使和其他高手的风格迥然不同。底线是前后如一地组织程序,相比而言,关于程序细节特定的方法就次要得多了。”

回答得真大气!

3一般控制问题

在“布尔表达式的常见问题”一节,作者提到”在C家族语言中,应该把常量放在比较的左端”,因为如果误把==写成=,将常量放在等号左侧,编译器会捕获这个错误。感觉这一点平常老师也提过,但是自己写程序时还是没有那样做,争取以后把这个改一下。

在“空语句”一节以及”避免使用空循环”一节中,作者提到应该为空语句创建一个DoNothing()预处理宏或者内联函数。可是我觉得没必要,一个分号我也觉得挺顺眼的。不过,也许是出于工程学的角度,作者才会这样建议吧,毕竟代码多了,分号很可能看花眼。这算是一个小问题吧:有必要避免空循环吗?

4协同构建

因为这次是首次接触到“结对编程”,所以特意把 “协同构建”(21章)这一章看了下。虽然课上老师提过结对编程的诸多好处,可是我觉得要想成功运用结对编程肯定不容易,于是第4个问题:结对编程如何成功有效地被利用?刚刚书中也有这方面的回答,作者在“成功运用结对编程的关键”一节中提出了几条准则:

用编码规范来支持结对编程

不要让结对编程变成旁观

不要强迫在简单的问题上使用结对编程

有规律地对结对人员和分配的工作进行轮换

鼓励双方跟上对方的步伐

确认两个人都能够看到显示器

不要强迫程序员与自己关系紧张的人相对

避免新手组合

指定一个组长

就我这次结对的经历来看,我觉得第二点尤为重要,不掌握键盘的人应该分析代码,这样虽然你的手没在敲代码,但是还是参与进来了,感觉在实践中参与感是很重要的。

5软件工艺

书中的侧边部分会有一些交叉参考的提示,以及一些人关于这部分的言论。我觉得这真的是很值得赞扬的地方。回正题——我在交叉参考里看到过很多次“首先为人写程序,其次才是为机器”,这正是贯穿全本书的一个主题,即强调可读性。我觉得这句话都可以作为一种准则了。

另外,之前我对于编程语言的选择有一点疑问,不清楚自己到底该不该学很多门语言,也不知道该选择哪种去学习。 “深入一门语言去编程,不浮于表面”一节给了我一点启示。我现在的看法是:可以首先多了解自己比较感兴趣的几门语言,然后选择一门深入学习。

 

 

 

posted @ 2014-10-15 18:58  encoin  阅读(4648)  评论(2编辑  收藏  举报