Code Complete读书笔记03
2012-05-03
Chapter13
1、把指针操作限制在子程序或类里面
例:对于一个链表,通过NextLink(),InsertLink(),DeleteLink()等子程序操作指针,即集中控制数据
2、按正确的顺序删除指针(释放当前指针之前,确保已经有指向下一个元素的指针)
3、删除或释放指针后将其设为空值(避免迷途指针)
4、向子程序传递对象时→按引用传递而非按值(避免复制该对象,提高效率)
当希望按值传递时(比如,不想误修改传入对象)→按const引用
5、只有万不得已时才使用全局数据
考虑以下替换方案
1)先把变量设为局部的,仅当需要时才设为全局的
2)区分全局变量和类变量→模块化
3)使用访问器子程序
6、创建一种命名规则来突出全局变量,且为全局变量创建一份注释良好的清单
Chapter14 略
Chapter15
1、把正常情况的处理放在if后面而不是else后面
即if(file.exist())
do……
else cerr<<”File don’t exist”;
2、让if后面跟一个有意义的句子,避免诸如
if(sometest)
;
else do…
替代方案
if(!sometest)
do……
3、在写if→else if→else if……→else串的时候
1,利用布尔函数简化复杂的检测
2,把最常见的情况放最前面
3,确保所有情况都考虑到
例如,if(IsNumber(c)) …..
else if(IsLetter(c)) ……
else if(IsBlank(c)) ……
else ……
4、case语句使用事项
1,简化每种情况对应的操作
例如 case 1: statement1;
statement2;
statementn;
变为 case 1: func();
func()
{
statement1……n;
}
2,把default子句只用于检查真正的默认情况,不要把最后一种情况写为default
利用default子句检测错误
如case 1: statement…
case 2: statement…
default: print(Error);