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對象的保留屬性名
- 用于分頁的保留屬性名
- 用于鏈接的保留屬性名
- 錯誤對象中的保留屬性名
- 屬性順序
- 示例
- 附錄