第五章 类和函数: 实现
条款29: 避免返回内部数据的句柄
原因:“句柄就象指针一样,可以是悬浮(dangle)的。所以一定要象避免悬浮的指针那样,尽量避免悬浮的句柄。”
条款30: 避免这样的成员函数:其返回值是指向成员的非const指针或引用,但成员的访问级比这个函数要低
原因:保持语言表达的一致性。
条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
原因:安全性。
条款32: 尽可能地推迟变量的定义
原因:“推迟变量定义可以提高程序的效率,增强程序的条理性,还可以减少对变量含义的注释。”。计算一下程序开销,自行决定最佳的方式。
条款33: 明智地使用内联
原因:“内联造成的代码膨胀也可能会导致不合理的页面调度行为(系统颠簸),这将使你的程序运行慢得象在爬。过多的内联还会降低指令高速缓存的命中率,从而使取指令的速度降低,因为从主存取指令当然比从缓存要慢。”一切皆以实际效果为准,inline是把双刃剑。“内联函数中的静态对象常常表现出违反直觉的行为。”
条款34: 将文件间的编译依赖性降至最低
原因:可能大型程序这个问题比较严重,先记住一些编码范式,执行之:“如果可以使用对象的引用和指针,就要避免使用对象本身。”“尽可能使用类的声明,而不使用类的定义。”“不要在头文件中再(通过#include指令)包含其它头文件,除非缺少了它们就不能编译。”