近段时间一直听人提到《代码大全》这本书,因而对这本被评价为程序员必读之书产生了浓厚的兴趣。最近有幸从一同学处借到了这本书,自要好好学习一番。
正如译者在序中所说,这本英文名名为《Code Complete》的书被翻译作《代码大全》确实不是那么恰如其分。书中包含了写好一个程序,做好一个项目几乎所有的要点,非常值得一读。写下这篇博文的目的是对自己看书所学做出一个小结,方便自己回头查看,同时将一点感悟分享给更多的人。
我先读的一节是11章,“变量名的力量”,我本身在变量命名方面并没有非常自如,因此也就把这一章作为了阅读的首选。
通读整章后的要点如下:
1、一个好的变量名应该是“可读的、易记的和恰如其分的”,表示每月总金额使用monthlyTotal作为变量名肯定比用a要好的多。
2、变量名的长度。书中给出的观点是“变量名的长度在10到16个字符间,调试程序所花的气力是最小的”,“太短的名字无法传达足够的信息,太长的名字很难写也会是视觉结构模糊不清”,因此我们在命名的时候就有必要在能清晰表达出变量含义的基础上减少其长度。例如:要表达体育场中座位数量的变量,命名为numberOfSeatsInTheStadium就太长,命名为nsisd样的缩写可读性很差,含义不清,而seatCount、numSeatsInStadium就长度刚好。
3、变量的长度可以给人以说明,研究表明较长的名字适用于很少用到的变量或者全局变量,较短的名字适用于局部变量或者循环变量,这一点在编码中是十分有用的经验。
4、如果要使用Total、Sum、Average、Max、Min这样的限定词,请把限定词加在名字的后面,如revenueTotal。这保证了主要含义的部分在前面,可以提高可读性。
5、对仗词的使用要准确,这样会便于理解和记忆,如begin/end、first/last、min/max、old/newd等。
6、简单循环中i、j、k等循环变量的命名是约定俗成的,如果变量名在循环外要使用就需要更有意义的名字,如recondCount++,在循环嵌套的时候应该给循环变量赋予更长的名字以提高可读性。
7、为状态量取一个比flag更好的名字,因为你从中看不出来该标记是干什么的。characterType=COUNTROL_CHARACTER要比statusFlag=0x80更有意义。
8、临时变量被命名为temp、x等说明程序员还没有完全把问题弄清楚,用真正的变量代替“临时变量”。
9、书中给出了五种类和对象的命名方案,书中采用对变量采用更为明确的名字区分类型和变量,如Widget employeeWidget。
10、使用g_前缀来标识全局变量,使用m_前缀来标识成员变量,常量可以用全部大写或加c_前缀来标识。
11、变量名包含了变量的内容、数据的种类、变量的作用域三类信息。
12、名字对于代码读者的意义要比作者重要,读一读你自己写的并且至少六个月没有看过的代码,你也会变成一个读者。
13、避免使用令人误解、具有相似含义、与变量含义无关的名字。