青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Creative Commons License
本Blog采用 知識共享署名-非商業(yè)性使用-禁止演繹 3.0 Unported許可協(xié)議 進(jìn)行許可。 —— Fox <游戲人生>

游戲人生

游戲人生 != ( 人生 == 游戲 )
站點遷移至:http://www.yulefox.com。請訂閱本博的朋友將RSS修改為http://feeds.feedburner.com/yulefox
posts - 62, comments - 508, trackbacks - 0, articles - 7

原文地址:

  • 命名約定

最重要的一致性規(guī)則是命名管理,命名風(fēng)格直接可以直接確定命名實體是:類型、變量、函數(shù)、常量、宏等等,無需查找實體聲明,我們大腦中的模式匹配引擎依賴于這些命名規(guī)則。

命名規(guī)則具有一定隨意性,但相比按個人喜好命名,一致性更重要,所以不管你怎么想,規(guī)則總歸是規(guī)則。

1. 通用命名規(guī)則(General Naming Rules)

函數(shù)命名、變量命名、文件命名應(yīng)具有描述性,不要過度縮寫,類型和變量應(yīng)該是名詞,函數(shù)名可以用“命令性”動詞。

如何命名

盡可能給出描述性名稱,不要節(jié)約空間,讓別人很快理解你的代碼更重要,好的命名選擇:

int num_errors;                  // Good.
int num_completed_connections;   // Good.

丑陋的命名使用模糊的縮寫或隨意的字符:

int n;                           // Bad - meaningless.
int nerr;                        // Bad - ambiguous abbreviation.
int n_comp_conns;                // Bad - ambiguous abbreviation.

類型和變量名一般為名詞:如FileOpenernum_errors。

函數(shù)名通常是指令性的,如OpenFile()、set_num_errors(),訪問函數(shù)需要描述的更細(xì)致,要與其訪問的變量相吻合。

縮寫

除非放到項目外也非常明了,否則不要使用縮寫,例如:

// Good
// These show proper names with no abbreviations.
int num_dns_connections;  // Most people know what "DNS" stands for.
int price_count_reader;   // OK, price count. Makes sense.
 
// Bad!
// Abbreviations can be confusing or ambiguous outside a small group.
int wgc_connections;  // Only your group knows what this stands for.
int pc_reader;        // Lots of things can be abbreviated "pc".

不要用省略字母的縮寫:

int error_count;  // Good.
int error_cnt;    // Bad.

2. 文件命名(File Names)

文件名要全部小寫,可以包含下劃線(_)或短線(-),按項目約定來。

可接受的文件命名:

my_useful_class.cc
my-useful-class.cc
myusefulclass.cc

C++文件以.cc結(jié)尾,頭文件以.h結(jié)尾。

不要使用已經(jīng)存在于/usr/include下的文件名(譯者注,對UNIX、Linux等系統(tǒng)而言),如db.h

通常,盡量讓文件名更加明確,http_server_logs.h就比logs.h要好,定義類時文件名一般成對出現(xiàn),如foo_bar.hfoo_bar.cc,對應(yīng)類FooBar。

內(nèi)聯(lián)函數(shù)必須放在.h文件中,如果內(nèi)聯(lián)函數(shù)比較短,就直接放在.h中。如果代碼比較長,可以放到以-inl.h結(jié)尾的文件中。對于包含大量內(nèi)聯(lián)代碼的類,可以有三個文件:

url_table.h      // The class declaration.
url_table.cc     // The class definition.
url_table-inl.h  // Inline functions that include lots of code.

參考第一篇-inl.h文件一節(jié)。

3. 類型命名(Type Names)

類型命名每個單詞以大寫字母開頭,不包含下劃線:MyExcitingClass、MyExcitingEnum。

所有類型命名——類、結(jié)構(gòu)體、類型定義(typedef)、枚舉——使用相同約定,例如:

// classes and structs
class UrlTable { ... 
class UrlTableTester { ... 
struct UrlTableProperties { ...

// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;

// enums
enum UrlTableErrors { ...

4. 變量命名(Variable Names)

變量名一律小寫,單詞間以下劃線相連,類的成員變量以下劃線結(jié)尾,如my_exciting_local_variable、my_exciting_member_variable_。

普通變量命名

舉例:

string table_name;  // OK - uses underscore.
string tablename;   // OK - all lowercase.
string tableName;   // Bad - mixed case.

類數(shù)據(jù)成員

結(jié)構(gòu)體的數(shù)據(jù)成員可以和普通變量一樣,不用像類那樣接下劃線:

struct UrlTableProperties {
  string name;
  int num_entries;
}

結(jié)構(gòu)體與類的討論參考第三篇結(jié)構(gòu)體vs.類一節(jié)。

全局變量

對全局變量沒有特別要求,少用就好,可以以g_或其他易與局部變量區(qū)分的標(biāo)志為前綴。

5. 常量命名(Constant Names)

在名稱前加kkDaysInAWeek。

所有編譯時常量(無論是局部的、全局的還是類中的)和其他變量保持些許區(qū)別,k后接大寫字母開頭的單詞:

const int kDaysInAWeek = 7;

6. 函數(shù)命名(Function Names)

普通函數(shù)(regular functions,譯者注,這里與訪問函數(shù)等特殊函數(shù)相對)大小寫混合,存取函數(shù)(accessors and mutators)則要求與變量名匹配:MyExcitingFunction()、MyExcitingMethod()、my_exciting_member_variable()、set_my_exciting_member_variable()

普通函數(shù)

函數(shù)名以大寫字母開頭,每個單詞首字母大寫,沒有下劃線:

AddTableEntry()
DeleteUrl()

存取函數(shù)

存取函數(shù)要與存取的變量名匹配,這兒摘錄一個擁有實例變量num_entries_的類:

class MyClass {
 public:
  ...
  int num_entries() const { return num_entries_; }
  void set_num_entries(int num_entries) { num_entries_ = num_entries; }

 private:
  int num_entries_;
};

其他短小的內(nèi)聯(lián)函數(shù)名也可以使用小寫字母,例如,在循環(huán)中調(diào)用這樣的函數(shù)甚至都不需要緩存其值,小寫命名就可以接受。

譯者注:從這一點上可以看出,小寫的函數(shù)名意味著可以直接內(nèi)聯(lián)使用。

7. 命名空間(Namespace Names)

命名空間的名稱是全小寫的,其命名基于項目名稱和目錄結(jié)構(gòu):google_awesome_project。

關(guān)于命名空間的討論和如何命名,參考第二篇命名空間。

8. 枚舉命名(Enumerator Names)

枚舉值應(yīng)全部大寫,單詞間以下劃線相連:MY_EXCITING_ENUM_VALUE。

枚舉名稱屬于類型,因此大小寫混合:UrlTableErrors。

enum UrlTableErrors {
  OK = 0,
  ERROR_OUT_OF_MEMORY,
  ERROR_MALFORMED_INPUT,
};

9. 宏命名(Macro Names)

你并不打算使用宏,對吧?如果使用,像這樣:MY_MACRO_THAT_SCARES_SMALL_CHILDREN。

參考第四篇預(yù)處理宏,通常是不使用宏的,如果絕對要用,其命名像枚舉命名一樣全部大寫、使用下劃線:

#define ROUND(x) ...
#define PI_ROUNDED 3.0
MY_EXCITING_ENUM_VALUE

10. 命名規(guī)則例外(Exceptions to Naming Rules)

當(dāng)命名與現(xiàn)有C/C++實體相似的對象時,可參考現(xiàn)有命名約定:

bigopen()
函數(shù)名,參考open()
uint
typedef類型定義
bigpos
structclass,參考pos
sparse_hash_map
STL相似實體;參考STL命名約定
LONGLONG_MAX
常量,類似INT_MAX

______________________________________

譯者:命名約定就相對輕松許多,在遵從代碼一致性、可讀性的前提下,略顯隨意:

1. 總體規(guī)則:不要隨意縮寫,如果說ChangeLocalValue寫作ChgLocVal還有情可原的話,把ModifyPlayerName寫作MdfPlyNm就太過分了,除函數(shù)名可適當(dāng)為動詞外,其他命名盡量使用清晰易懂的名詞;

2. 宏、枚舉等使用全部大寫+下劃線;

3. 變量(含類、結(jié)構(gòu)體成員變量)、文件、命名空間、存取函數(shù)等使用全部小寫+下劃線,類成員變量以下劃線結(jié)尾,全局變量以g_開頭;

4. 普通函數(shù)、類型(含類與結(jié)構(gòu)體、枚舉類型)、常量等使用大小寫混合,不含下劃線;

5. 參考現(xiàn)有或相近命名約定。

Feedback

# re: [譯]Google C++編程風(fēng)格指南(五)  回復(fù)  更多評論   

2008-07-22 15:21 by 小夜
呵呵,辛苦啊。前兩天剛看英文版,費勁啊,怎么也看不下去;這下得好好看看了。

# re: [譯]Google C++編程風(fēng)格指南(五)  回復(fù)  更多評論   

2011-09-15 14:48 by Rolex replica

學(xué)習(xí)學(xué)習(xí)??!

# re: [譯]Google C++編程風(fēng)格指南(五)  回復(fù)  更多評論   

2011-11-21 11:25 by uggs replica
給力!不錯
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品一区二区你懂的| 久久精彩视频| 狂野欧美一区| 另类酷文…触手系列精品集v1小说| 欧美中文字幕久久| 久久精品成人欧美大片古装| 久久精彩视频| 亚洲欧洲日产国产综合网| 亚洲区欧美区| 亚洲欧美一区二区三区在线| 久久国产视频网| 欧美日本三级| 黄色成人av网| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 一区二区三区免费看| 亚洲女同在线| 欧美国产激情二区三区| 一区二区三区精品视频在线观看| 午夜精品一区二区三区电影天堂| 久久躁日日躁aaaaxxxx| 欧美午夜精品一区| 尤妮丝一区二区裸体视频| 中文成人激情娱乐网| 久久久久国产精品人| 亚洲精品黄网在线观看| 欧美在线三区| 国产精品高清在线观看| 亚洲高清二区| 欧美专区亚洲专区| 亚洲第一在线视频| 亚洲大胆人体视频| 亚洲视频免费观看| 噜噜噜在线观看免费视频日韩| 欧美日韩精品久久久| 韩国av一区二区三区| 亚洲视频一区在线观看| 美女黄毛**国产精品啪啪| 亚洲性图久久| 欧美日韩一区二区在线观看视频| 亚洲成在人线av| 香蕉免费一区二区三区在线观看| 亚洲韩国精品一区| 久久精品一区二区三区不卡牛牛| 国产精品视频大全| 亚洲在线一区二区| 亚洲人线精品午夜| 欧美 日韩 国产在线 | 农夫在线精品视频免费观看| 国产视频精品免费播放| 亚洲欧美日韩高清| 一区二区三区精品视频在线观看| 欧美国产日产韩国视频| 激情久久久久久久| 久久中文精品| 久久久伊人欧美| 亚洲第一在线综合网站| 美女久久一区| 麻豆成人在线观看| 亚洲精品视频在线观看免费| 亚洲福利一区| 欧美伦理一区二区| 亚洲视频免费看| 中国亚洲黄色| 国产精品综合av一区二区国产馆| 欧美一区二区三区四区在线观看| 亚洲一区在线观看视频| 国产偷国产偷亚洲高清97cao | 国产一区二区三区奇米久涩 | 久久国产精品免费一区| 亚洲尤物影院| 国产在线国偷精品产拍免费yy| 欧美影片第一页| 欧美呦呦网站| 亚洲精品国产精品久久清纯直播| 亚洲黑丝在线| 国产精品欧美日韩一区| 久久久久久网站| 另类av一区二区| 亚洲乱码精品一二三四区日韩在线 | 亚洲精品乱码久久久久久蜜桃麻豆| 欧美国产日韩亚洲一区| 妖精成人www高清在线观看| 日韩视频在线观看| 国产欧美一区二区在线观看| 麻豆久久婷婷| 欧美日韩喷水| 久久免费视频这里只有精品| 理论片一区二区在线| 一区二区三区四区五区精品视频| 亚洲图中文字幕| 在线观看视频欧美| 一卡二卡3卡四卡高清精品视频| 国产日韩亚洲| 亚洲精品国产精品乱码不99| 国产精品午夜国产小视频| 欧美3dxxxxhd| 国产精品入口日韩视频大尺度| 老司机一区二区| 国产精品久久久久久久午夜| 欧美成人第一页| 国产伦精品一区二区三区在线观看 | 久久成人在线| 欧美国产视频日韩| 久久精品视频免费| 欧美午夜电影在线观看| 欧美r片在线| 国产视频在线一区二区 | 久久永久免费| 欧美性大战久久久久| 欧美成人一区二区在线| 国产免费成人在线视频| 亚洲日本中文字幕区| 国产日韩欧美高清| 在线视频欧美日韩精品| 日韩午夜电影av| 久久综合伊人| 老牛嫩草一区二区三区日本| 国产精品区一区| 在线一区二区三区四区| 99精品福利视频| 欧美成人免费全部观看天天性色| 久久久久久一区| 国产主播一区二区| 欧美一级艳片视频免费观看| 亚洲欧美精品在线观看| 欧美三级在线播放| 日韩一二三在线视频播| 99av国产精品欲麻豆| 欧美成人一区二区三区| 欧美成人国产va精品日本一级| 国外成人在线视频网站| 欧美诱惑福利视频| 久久久亚洲高清| 激情婷婷欧美| 久久免费观看视频| 亚洲精品视频在线观看网站| 欧美日韩日本国产亚洲在线| 亚洲电影欧美电影有声小说| 亚洲欧美日韩一区二区在线 | 亚洲精品视频一区| 亚洲美洲欧洲综合国产一区| 美女诱惑一区| 亚洲黄色毛片| 日韩视频在线免费| 欧美日韩一区在线视频| 一区二区三区欧美激情| 亚洲欧美国产另类| 国产伦理一区| 久久免费偷拍视频| 亚洲高清三级视频| 亚洲色图自拍| 国产午夜精品理论片a级探花| 久久国产福利国产秒拍| 免费永久网站黄欧美| 亚洲精品一区久久久久久| 欧美高清hd18日本| 亚洲伊人观看| 欧美激情欧美狂野欧美精品| 一区二区三区视频在线| 国产日韩专区在线| 欧美成人午夜激情视频| 亚洲一二三区在线观看| 毛片一区二区| 亚洲制服少妇| 影音先锋中文字幕一区二区| 欧美激情视频一区二区三区不卡| 亚洲一区二区免费在线| 美女福利精品视频| 亚洲男女毛片无遮挡| 亚洲国产91| 国产九九精品视频| 欧美国产亚洲另类动漫| 性欧美18~19sex高清播放| 亚洲缚视频在线观看| 香蕉精品999视频一区二区| 91久久精品国产91久久性色tv| 国产精品视频不卡| 欧美精品色综合| 久久久久综合网| 亚洲与欧洲av电影| 91久久国产精品91久久性色| 久久精品99国产精品| 一区二区三区四区五区精品视频| 激情欧美一区二区| 国产精品一区二区黑丝| 欧美精品色综合| 男女视频一区二区| 久久精品盗摄| 午夜天堂精品久久久久| 亚洲毛片av| 亚洲激情一区二区| 欧美国产日韩一区二区在线观看| 欧美在线www| 亚洲欧美一区在线| 一区二区三区蜜桃网| 99视频一区| 99视频精品全部免费在线| 亚洲国产天堂网精品网站| 伊人久久婷婷色综合98网| 国产精品久久久久久一区二区三区|