0. 扉頁(yè)

2018-02-24 15:11 更新
版本:

3.133

原作者:
Benjy Weinberger
Craig Silverstein
Gregory Eitzmann
Mark Mentovai
Tashana Landray
翻譯:
YuleFox [http://www.yulefox.com]
brantyoung [http://yangyubo.com]
項(xiàng)目主頁(yè):

0.1 譯者前言

Google 經(jīng)常會(huì)發(fā)布一些開(kāi)源項(xiàng)目, 意味著會(huì)接受來(lái)自其他代碼貢獻(xiàn)者的代碼. 但是如果代碼貢獻(xiàn)者的編程風(fēng)格與 Google 的不一致, 會(huì)給代碼閱讀者和其他代碼提交這造成不小的困擾. Google 因此發(fā)布了這份自己的編程風(fēng)格, 使所有提交代碼的人都能獲知 Google 的編程風(fēng)格.

翻譯初衷:
規(guī)則的作用就是避免混亂. 但規(guī)則本身一定要權(quán)威, 有說(shuō)服力, 并且是理性的. 我們所見(jiàn)過(guò)的大部分編程規(guī)范, 其內(nèi)容或不夠嚴(yán)謹(jǐn), 或闡述過(guò)于簡(jiǎn)單, 或帶有一定的武斷性.

Google 保持其一貫的嚴(yán)謹(jǐn)精神, 5 萬(wàn)漢字的指南涉及廣泛, 論證嚴(yán)密. 我們翻譯該系列指南的主因也正是其嚴(yán)謹(jǐn)性. 嚴(yán)謹(jǐn)意味著指南的價(jià)值不僅僅局限于它羅列出的規(guī)范, 更具參考意義的是它為了列出規(guī)范而做的謹(jǐn)慎權(quán)衡過(guò)程.

指南不僅列出你要怎么做, 還告訴你為什么要這么做, 哪些情況下可以不這么做, 以及如何權(quán)衡其利弊. 其他團(tuán)隊(duì)未必要完全遵照指南亦步亦趨, 如前面所說(shuō), 這份指南是 Google 根據(jù)自身實(shí)際情況打造的, 適用于其主導(dǎo)的開(kāi)源項(xiàng)目. 其他團(tuán)隊(duì)可以參照該指南, 或從中汲取靈感, 建立適合自身實(shí)際情況的規(guī)范.

我們?cè)诜g的過(guò)程中, 收獲頗多. 希望本系列指南中文版對(duì)你同樣能有所幫助.

我們翻譯時(shí)也是盡力保持嚴(yán)謹(jǐn), 但水平所限, bug 在所難免. 有任何意見(jiàn)或建議, 可與我們?nèi)〉寐?lián)系.

中文版和英文版一樣, 使用 Artistic License/GPL 開(kāi)源許可.

中文版修訂歷史:

  • 2009-06 3.133 : YuleFox 的 1.0 版已經(jīng)相當(dāng)完善, 但原版在近一年的時(shí)間里, 其規(guī)范也發(fā)生了一些變化.

brantyoung 與 YuleFox 一拍即合, 以項(xiàng)目的形式來(lái)延續(xù)中文版 : Google 開(kāi)源項(xiàng)目風(fēng)格指南 - 中文版項(xiàng)目 [http://github.com/brantyoung/zh-google-styleguide].

主要變化是同步到 3.133 最新英文版本, 做部分勘誤和改善可讀性方面的修改, 并改進(jìn)排版效果. brantyoung 重新翻修, YuleFox 做后續(xù)評(píng)審.

0.2 背景

C++ 是 Google 大部分開(kāi)源項(xiàng)目的主要編程語(yǔ)言. 正如每個(gè) C++ 程序員都知道的, C++ 有很多強(qiáng)大的特性, 但這種強(qiáng)大不可避免的導(dǎo)致它走向復(fù)雜,使代碼更容易產(chǎn)生 bug, 難以閱讀和維護(hù).

本指南的目的是通過(guò)詳細(xì)闡述 C++ 注意事項(xiàng)來(lái)駕馭其復(fù)雜性. 這些規(guī)則在保證代碼易于管理的同時(shí), 高效使用 C++ 的語(yǔ)言特性.

風(fēng)格, 亦被稱作可讀性, 也就是指導(dǎo) C++ 編程的約定. 使用術(shù)語(yǔ) “風(fēng)格” 有些用詞不當(dāng), 因?yàn)檫@些習(xí)慣遠(yuǎn)不止源代碼文件格式化這么簡(jiǎn)單.

使代碼易于管理的方法之一是加強(qiáng)代碼一致性. 讓任何程序員都可以快速讀懂你的代碼這點(diǎn)非常重要. 保持統(tǒng)一編程風(fēng)格并遵守約定意味著可以很容易根據(jù) “模式匹配” 規(guī)則來(lái)推斷各種標(biāo)識(shí)符的含義. 創(chuàng)建通用, 必需的習(xí)慣用語(yǔ)和模式可以使代碼更容易理解. 在一些情況下可能有充分的理由改變某些編程風(fēng)格, 但我們還是應(yīng)該遵循一致性原則,盡量不這么做.

本指南的另一個(gè)觀點(diǎn)是 C++ 特性的臃腫. C++ 是一門包含大量高級(jí)特性的龐大語(yǔ)言. 某些情況下, 我們會(huì)限制甚至禁止使用某些特性. 這么做是為了保持代碼清爽, 避免這些特性可能導(dǎo)致的各種問(wèn)題. 指南中列舉了這類特性, 并解釋為什么這些特性被限制使用.

Google 主導(dǎo)的開(kāi)源項(xiàng)目均符合本指南的規(guī)定.

注意: 本指南并非 C++ 教程, 我們假定讀者已經(jīng)對(duì) C++ 非常熟悉.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)