Google 用了很多自己实现的技巧 / 工具使 C++ 代码更加健壮, 我们使用 C++ 的方式可能和你在其它地方见到的有所不同.
## 4.1. 智能指针
> Tip
> 如果确实需要使用智能指针的话, `scoped_ptr` 完全可以胜任. 你应该只在非常特定的情况下使用 `std::tr1::shared_ptr`, 例如 STL 容器中的对象. 任何情况下都不要使用 `auto_ptr`.
“智能” 指针看上去是指针, 其实是附加了语义的对象. 以 `scoped_ptr` 为例, `scoped_ptr` 被销毁时, 它会删除所指向的对象. `shared_ptr` 也是如此, 并且 `shared_ptr` 实现了引用计数, 所以最后一个 `shared_ptr` 对象析构时, 如果检测到引用次数为 0,就会销毁所指向的对象.
一般来说,我们倾向于设计对象隶属明确的代码, 最明确的对象隶属是根本不使用指针, 直接将对象作为一个作用域或局部变量使用. 另一种极端做法是, 引用计数指针不属于任何对象. 这种方法的问题是容易导致循环引用, 或者导致某个对象无法删除的诡异状态, 而且在每一次拷贝或赋值时连原子操作都会很慢.
虽然不推荐使用引用计数指针, 但有些时候它们的确是最简单有效的解决方案.
(YuleFox 注: 看来, Google 所谓的不同之处, 在于尽量避免使用智能指针 :D, 使用时也尽量局部化, 并且, 安全第一)
## 4.2. cpplint
> Tip
> 使用 `cpplint.py` 检查风格错误.
`cpplint.py` 是一个用来分析源文件, 能检查出多种风格错误的工具. 它不并完美, 甚至还会漏报和误报, 但它仍然是一个非常有用的工具. 用行注释 `// NOLINT` 可以忽略误报.
某些项目会指导你如何使用他们的项目工具运行 `cpplint.py`. 如果你参与的项目没有提供, 你可以单独下载 [cpplint.py](http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py) .
- Google 开源项目风格指南 (中文版)
- C++ 风格指南
- 0. 扉页
- 1. 头文件
- 2. 作用域
- 3. 类
- 4. 来自 Google 的奇技
- 5. 其他 C++ 特性
- 6. 命名约定
- 7. 注释
- 8. 格式
- 9. 规则特例
- 10. 结束语
- Objective-C 风格指南
- Google Objective-C Style Guide 中文版
- 留白和格式
- 命名
- 注释
- Cocoa 和 Objective-C 特性
- Cocoa 模式
- Python 风格指南
- Google Python 风格指南 - 中文版
- 背景
- Python语言规范
- Python风格规范
- 临别赠言
- JSON 风格指南
- 简介
- 定义
- 一般准则
- 属性名准则
- 属性值准则
- 属性值数据类型
- JSON结构和保留属性名
- 顶级保留属性名称
- data对象的保留属性名
- 用于分页的保留属性名
- 用于链接的保留属性名
- 错误对象中的保留属性名
- 属性顺序
- 示例
- 附录