这些天,趁着上课的时间一直在看《Code Complete》,说实话第一次在图书馆看到此书时确实令我纳闷,怎会有这样的书,竟敢号称代码大全?觉得应该会是本比较无聊之书吧,便于其擦肩而过了。直到有一次在豆瓣上偶然看到这本书的评价时才知道这本书所谓的“名不符实”。这确实是本实在的好书。对此书网上大家早已好评如潮,我就无需多说了。
现在我就写下我的一些读书感悟。
我读了第三部分和第七部分,便已获益匪浅了。看完这两部分后,我决定以后便按照这个风格来编写自己的代码,努力提高自己的代码质量
第三部分 第11章 变量名的力量
一、关于变量名
1.如果你发现自己需要猜测某段代码的含义的时,那就要考虑为变量重新命名
2.变量名一定要取得恰如其分,能够很好的表达出这个变量的含义,令人一看便懂,而不需要添加额外注释去解释程度,
总的规则而言,是采用驼峰式命名法,如typeName,dataReady,不在名字中使用下划线和$。而对于具名常量,则
全部使用大写字母并用下划线做分隔,如CONTROL_CHARACTER
3.为循环变量的下标命名时,不使用i, j, k。而要使用那些符合规则2的名字。这样可以很好的避免很多问题:如想用j的时候却写了i。
不然当到达三层的时候将会变得有些混乱。而最贱的办法就是想出一个比i, j, k更据描述性的例子来
Java示例:简单的循环变量名
for (int i = 0; i < teamCount; i++) {
for (int j=0; j < eventCount; j++) {
score [ i ][ j ] = 0;
}
}
Java示例:嵌套循环中的好循环变量名
for ( int teamIndex = 0; teamIndex < teamCount; teamIndex ++ ) {
for ( int eventIndex = 0; eventIndex < eventCount [ teamIndex ]; eventIndex ++ ) {
score[ teamIndex ][ eventIndex ] = 0;
}
}
4.为临时命名,不要取一些temp之类的名,仍然是要符合规则2
5.为布尔类型命名:
1)典型的布尔变量名:done, error, found, success, ok
2)使用肯定的布尔变量名:不要使用notFound等较难阅读的
6.为常量命名:根据该常量所表示的含义,而不是该常量所具有的数值为该抽象事物命名。这样banding会比直接赋值要晚的多,切 更具灵活性
7.应该避免的名字:
1)避免使用令人误解的名字或缩写
2)避免使用具有相似含义的名字,如recordNum和numRecords
3)避免使用具有不同含义但却有相似名字的变量:clientRecs和clientReps这样的名字就不合适,应该修改其中一个
4)避免在名字中使用数字
5)避免在名字中拼错单词
6)不要仅靠大小写来区分变量名
7)不要使用于变量名含义完全无关的名字