〈35,读书笔记——林锐·高质量C编程指南:卷11——其他编程经验〉
本篇主要包含使用const提高函数的健壮性,提高程序效率,一些有用的建议几个方面
————————————————————————
1,使用const提高函数健壮性
const最大的魅力在于它可以修饰函数的参数,返回值甚至是函数的定义体。so,use const whenever you need。
1.1 使用const修饰函数的参数
若参数做输出用,则无论如何也不能用const修饰,否则失去效用。
const只能修饰输入参数。若修饰指针传递,则可避免指针的意外改动。值传递没有const修饰的必要,因为它本身就是一份复制。
因为若非内部数据类型的函数参数,在用值传递时会效率太低,故我们我们用引用 ,void fun(const A &a)。而内部的直接值传递即可,因为很快。
1.2const修饰函数的返回值
若修饰指针传递方式的返回值,则,指针指向不能改,即,只能复制给同样用const修饰的同类型指针。
const char * GetString(void);
const char *str = GetString();
此外,用const修饰值传递没有任何意义
1.3 const成员函数
任何不修改数据成员的函数都应声明为const。这样一来,一旦调用了修改成员的函数(非 const),就会报错。
int A::GetCount(void) const{}
const修饰成员函数只能放最后
————————————————————————
2,提高函数的效率
程序的时间效率指运行速度,空间效率指占用内存或外存的状况
全局效率是指站在系统的角度考虑,局部效率是指站在模块的角度。
2.1不可一味的追求程序的效率,而应该在满足准确性,可靠性,健壮性,可读性的前提下,设法提高效率。
2.2以提高程序的全局效率为主,局部为辅
2.3先优化算法和数据结构,再优化执行代码
——————————————————————————
3,一些有用的建议
3.1不要把==写作=
3.2变量(数组,指针)创建后应及时初始化,
3.3,尽量显式的数据类型转换,尽量避免编译器的隐式转换
3.4当心变量的上下溢,或下标出界
3.5小心编写错误处理程序,同时提防其自身有错
3.6 注意文件IO有误
3.7尽量复用
3.8尽量不要使用和平台相关性强的变量
3.9编译器选择为最严格
3.10使用PC-Lint,LogiScope进行代码审查