目录
谷歌采用很多技巧和工具来确保C++代码的健壮性,而且,谷歌使用C++的方式和其他地方很不同。
智能指针(Smart Pointers)
如果使用指针,最好使用受限指针(soped_ptr)。而std::tr1::shared_prt只有在很少的情况下都会用得到,比如对象需要被标准模板库容器包含。任何情况下不要使用自动指针(auto_ptr)。
智能指针是指行为类似于指针但增加额外功能的对象。当一个scoped_ptr被销毁时,它也将删除其指向的对象删除。shared_prt也具有类似功能,但它会实现引用计数直到它指向的最后一个对象删除它。
通俗点说,我们希望定义清楚每个对象的归属。但最清楚的对象归属是此对象被域或者局部变量拥有,而不是使用指针。另一个极端是,在它们被定义时,引用计数指针不被任何对象拥有。这种定义的问题是,这样将很容易循环引用或者对象⽆无法被销毁的奇怪现象。而每个原子操作都进行复制或赋值将影响性能。
即使不提倡,引用计数指针有时却是最简单和幽雅的问题解决方式。
CPPlint
使用cpplint.py来检测风格错误。
Cpplint.py是一个能读取源文件并识别风格错误的工具。尽管不很完美,有很多优点和缺点,但它仍是一个有用的工具。主动错误信息可以将// NOLINT放在行后来忽略。
有些项目带有如何从项目工具运行cpplint.py的说明。如果没有,你可以单独下载它。