个人日志

物联网 & 极简主义

〈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进行代码审查

上一篇 下一篇
评论
热度(1)
©个人日志 | Powered by LOFTER