亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > C++ > 正文

[C++] 編程實(shí)踐之1: Google的C++代碼風(fēng)格7:注釋

2019-11-06 06:03:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

注釋

注釋雖然寫起來(lái)很痛苦,但對(duì)保證代碼可讀性至關(guān)重要。下面的規(guī)則描述了如何注釋以及在哪兒注釋。當(dāng)然也要記?。鹤⑨尮倘缓苤匾?,但最好的代碼本身應(yīng)該是自文檔化的。有意義的類型名和變量名,要遠(yuǎn)勝過(guò)要用注釋解釋的含糊不清的名字。

你寫的注釋是給下一個(gè)需要理解你的代碼的人看的??犊┌?,下一個(gè)人可能就是你!

注釋風(fēng)格

使用//或者/**/,統(tǒng)一就好。

//或者/**/都可以,但是//更常用。要在如何注釋以及注釋風(fēng)格上確保統(tǒng)一。

文件注釋

在每一個(gè)文件開頭加入版權(quán)公告,然后是文件內(nèi)容描述。

法律公告和作者信息:

每個(gè)文件都應(yīng)該包含以下項(xiàng),依次是: 版權(quán)聲明(比如,Copyright 2008 Google Inc.)許可證。為項(xiàng)目選擇合適的許可證版本(比如Apache 2.0, BSD, LGPL, GPL)作者:標(biāo)識(shí)文件的原始作者如果你對(duì)原始作者的文件做了重大修改,將你的信息添加到作者信息里。這樣當(dāng)其他人對(duì)該文件有疑問(wèn)時(shí)可以知道該聯(lián)系誰(shuí)。

文件內(nèi)容:

緊接著版權(quán)許可和作者信息之后,每個(gè)文件都要用注釋描述文件內(nèi)容。通常.h文件要對(duì)聲明的類的功能和用法作簡(jiǎn)單說(shuō)明。.cc文件通常包含了更多的實(shí)現(xiàn)細(xì)節(jié)或算法技巧討論,如果你感覺這些實(shí)現(xiàn)細(xì)節(jié)或者算法技巧討論對(duì)于理解.h文件有幫助,可以將該注釋挪到.h中,并且在.cc中指出文檔在.h中。不要簡(jiǎn)單的在.h和.cc間復(fù)制注釋。這種偏離了注釋的實(shí)際意義。

類注釋

每個(gè)類的定義都要附帶一份注釋,描述類的功能和用法。

// Iterates over the contents of a GargantuanTable. Sample usage:// GargantuanTable_Iterator* iter = table->NewIterator();// for (iter->Seek("foo"); !iter->done(); iter->Next()) {// PRocess(iter->key(), iter->value());// }// delete iter;class GargantuanTable_Iterator { ...};

如果你覺得已經(jīng)在文件頂部詳細(xì)描述了該類,像直接簡(jiǎn)單的上來(lái)一句“完整描述見文件頂部”也不打緊,但務(wù)必確保有這類注釋。

如果類有任何同步前提,文檔說(shuō)明之。如果該類的實(shí)例可被多線程訪問(wèn),要特別注意文檔說(shuō)明多線程環(huán)境下相關(guān)的規(guī)則和常量使用。

函數(shù)注釋

函數(shù)聲明處注釋描述函數(shù)的功能;定義處描述函數(shù)實(shí)現(xiàn)。

函數(shù)聲明:

注釋位于聲明之前,對(duì)函數(shù)功能及用法進(jìn)行描述。注釋使用敘述式(”O(jiān)pens the file”)而非指令式(”O(jiān)pen the file”);注釋只是為了描述函數(shù),而不是命令函數(shù)做什么。通常,注釋不會(huì)描述函數(shù)如何工作。那是函數(shù)定義部分的事情。函數(shù)聲明處注釋的內(nèi)容: 函數(shù)的輸入輸出。對(duì)類成員函數(shù)而言,函數(shù)調(diào)用期間對(duì)象是否需要保持引用參數(shù),是否會(huì)釋放這些參數(shù)。如果函數(shù)分配了空間,需要由調(diào)用者釋放。參數(shù)是否可以被NULL。是否存在函數(shù)使用上的性能隱患。如果函數(shù)是可重入的,其同步的前提是什么。// Returns an iterator for this table. It is the client's// responsibility to delete the iterator when it is done with it,// and it must not use the iterator once the GargantuanTable object// on which the iterator was created has been deleted.//// The iterator is initially positioned at the beginning of the table.//// This method is equivalent to:// Iterator* iter = table->NewIterator();// iter->Seek("");// return iter;// If you are going to immediately seek to another place in the// returned iterator, it will be faster to use NewIterator()// and avoid the extra seek.Iterator* GetIterator() const;上面給出了一個(gè)具體示例。但是也要避免啰啰嗦嗦,或做些顯而易見的說(shuō)明。注釋構(gòu)造/析構(gòu)函數(shù)時(shí),切記讀代碼的人知道構(gòu)造/析構(gòu)函數(shù)是干啥的,所以“destroys this object”這樣的注釋是沒有意義的。注明構(gòu)造函數(shù)對(duì)參數(shù)做了什么(例如,是否取得指針?biāo)袡?quán))以及析構(gòu)函數(shù)清理了什么。如果都是些無(wú)關(guān)緊要的內(nèi)容,直接省掉注釋。析構(gòu)函數(shù)前沒有注釋是很正常的。

函數(shù)定義:

每個(gè)函數(shù)定義要用注釋說(shuō)明函數(shù)功能和實(shí)現(xiàn)要點(diǎn)。比如說(shuō)說(shuō)你用的編程技巧,實(shí)現(xiàn)的大致步驟,或者解釋如此實(shí)現(xiàn)的理由。為什么前半部分要加鎖而后半部分不需要等等之類的。不要從.h文件或其他地方的函數(shù)聲明處直接復(fù)制注釋。簡(jiǎn)要重述函數(shù)功能是可以的,但注釋重點(diǎn)要放在如何實(shí)現(xiàn)上。

變量注釋

通常變量名本身足以很好地說(shuō)明變量用途。但在某些情況下,也需要額外的注釋說(shuō)明。

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

每個(gè)類數(shù)據(jù)成員(也叫實(shí)例變量或者成員變量)都應(yīng)該用注釋說(shuō)明用途。如果變量可以接受NULL或者-1等警戒值,需要加以說(shuō)明。private: // Keeps track of the total number of entries in the table. // Used to ensure we do not go over the limit. -1 means // that we don't yet know how many entries the table has. int num_total_entries_;

全局變量:

和數(shù)據(jù)成員一樣,所有全局變量也要注釋說(shuō)明含義以及用途。比如:// The total number of tests cases that we run through in this regression test.const int kNumTestCases = 6;

實(shí)現(xiàn)注釋

對(duì)于代碼中巧妙的,晦澀的,有趣的,重要的地方加以注釋。

代碼前注釋:

巧妙或者復(fù)雜的代碼前要加以注釋,比如:// Divide result by two, taking into account that x// contains the carry from the add.for (int i = 0; i < result->size(); i++) { x = (x << 8) + (*result)[i]; (*result)[i] = x >> 1; x &= 1;}

行注釋:

比較晦澀的地方要在行尾加入注釋。在行尾空兩格進(jìn)行注釋,比如下面的代碼示例。注意這里用了兩段注釋分別描述這段代碼的作用,和提示函數(shù)返回時(shí)錯(cuò)誤已經(jīng)被記錄入日志。// If we have enough memory, mmap the data portion too.mmap_budget = max<int64>(0, mmap_budget - index_->length());if (mmap_budget >= data_size_ && !MmapData(mmap_chunk_bytes, mlock)) return; // Error already logged.如果你需要連續(xù)進(jìn)行多行注釋,可以使之對(duì)齊以獲得更好的可讀性:DoSomething(); // Comment here so the comments line up.DoSomethingElseThatIsLonger(); // Comment here so there are two spaces between // the code and the comment.{ // One space before comment when opening a new scope is allowed, // thus the comment lines up with the following comments and code. DoSomethingElse(); // Two spaces before line comments normally.}向函數(shù)傳入NULL,布爾值或者整數(shù)時(shí),要注釋說(shuō)明含義,或使用常量讓代碼望文知義。例如對(duì)比:// First version:bool success = CalculateSomething(interesting_value, 10, false, NULL); // What are these arguments??// Second version:bool success = CalculateSomething(interesting_value, 10, // Default base value. false, // Not the first time we're calling this.// Third version:const int kDefaultBaseValue = 10;const bool kFirstTimeCalling = false;Callback *null_callback = NULL;bool success = CalculateSomething(interesting_value, kDefaultBaseValue, kFirstTimeCalling, null_callback);

不允許: - 注意永遠(yuǎn)不要用自然語(yǔ)言翻譯代碼作為注釋。要假設(shè)讀代碼的人C++水平比你高,即使他/她可能不知道你的用意:

// Bad styles:// 現(xiàn)在, 檢查 b 數(shù)組并確保 i 是否存在,// 下一個(gè)元素是 i+1.... // 天哪. 令人崩潰的注釋.

標(biāo)點(diǎn),拼寫和語(yǔ)法

注意標(biāo)點(diǎn),拼寫和語(yǔ)法;寫的好的注釋比差的要易讀的多。

注釋的通常寫法是包含正確的大小寫和結(jié)尾句號(hào)的完整語(yǔ)句。短一點(diǎn)的注釋(如代碼行尾注釋)可以隨意點(diǎn),但依然要注意風(fēng)格的一致性。完整的語(yǔ)句可讀性更好,也可以說(shuō)明該注釋是完整的,而不是一些不成熟的想法。

雖然被別人指出該用分號(hào)時(shí)卻用了逗號(hào)多少有些尷尬,但清晰易讀的代碼還是很重要的。正確的標(biāo)點(diǎn),拼寫和語(yǔ)法對(duì)此會(huì)有幫助。

TODO注釋

對(duì)那些臨時(shí)的,短期的解決方案,或已經(jīng)夠好但仍不完美的代碼使用TODO注釋。

TODO注釋要使用全大寫的字符串TODO,在隨后的圓括弧里面寫上你的大名,郵件地址,或其它身份標(biāo)識(shí)。冒號(hào)是可選的。主要目的是讓添加注釋的人(也是可以請(qǐng)求提供更多細(xì)節(jié)的人)可以根據(jù)規(guī)范的TODO格式進(jìn)行查找。添加注釋并不意味著你要自己來(lái)修正。

// TODO(kl@Gmail.com): Use a "*" here for concatenation Operator.// TODO(Zeke) change this to use relations.

如果TODO是為了在“將來(lái)某一天做某事”,可以附上一個(gè)非常明確的時(shí)間“Fix by November 2005”或者一個(gè)明確的事項(xiàng)(例如“Remove this code when all clients can handle xml responses.”)。

棄用注釋

通過(guò)棄用注釋(DEPRECATED comments)以標(biāo)記某接口點(diǎn)(interface points)已棄用。

您可以寫上包含全大寫的DEPRECATED的注釋,以標(biāo)記某接口為棄用狀態(tài)。注釋可以放在接口聲明前,或者同一行。

在DEPRECATED一詞后,留下您的名字,郵箱地址以及括弧補(bǔ)充。

僅僅標(biāo)記接口為DEPRECATED并不會(huì)讓大家不約而同的棄用,您還得親自主動(dòng)修正調(diào)用點(diǎn)(callsites),或者是找個(gè)幫手。

修正好的代碼應(yīng)該不會(huì)再設(shè)計(jì)棄用接口點(diǎn)了,著實(shí)改用新接口點(diǎn)。如果您不知從何下手,可以找標(biāo)記棄用注釋的當(dāng)事人一起商量。

總結(jié)

關(guān)于注釋風(fēng)格,很多C++的coders更喜歡行注釋,C coders或許對(duì)塊注釋依然情有獨(dú)鐘,或者在文件頭大段大段的注釋時(shí)使用塊注釋。文件注釋可以炫耀你的成就,也是為了捅了簍子了別人可以找你。注釋要言簡(jiǎn)意賅,不要拖沓冗余,復(fù)雜的東西簡(jiǎn)單化和簡(jiǎn)單的東西復(fù)雜化都是要被鄙視的。對(duì)于Chinese coders來(lái)說(shuō),用英文注釋還是用中文注釋,it is a problem,但不管怎樣,注釋時(shí)為了讓別人看懂,難道是為了炫耀編程語(yǔ)言之外你的沐浴或者外語(yǔ)水平嗎?注釋不要太亂,適當(dāng)?shù)目s進(jìn)才會(huì)讓人樂意看。但也沒有必要規(guī)定注釋從第幾列開始(我自己寫代碼的時(shí)候總喜歡這樣)UNIX/linux下還可以約定是使用tab還是space,個(gè)人傾向于space。TODO很不錯(cuò),有時(shí)候,注釋確實(shí)是為了標(biāo)記一些未完成或者完成不盡如人意的地方,這樣一搜索,就知道還有哪些活要干,日志都省了。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

亚洲裸色大胆大尺寸艺术写真| 亚洲欧洲日韩一区二区三区| 欧美残忍xxxx极端| 成人福利网址| 天天色影综合网| 欧美精品一区二区三区在线| 日韩一区国产二区欧美三区| 国产精品久久久久久一区二区三区| 日韩亚洲天堂| 青娱乐精品视频在线| 日本福利片在线观看| 国产馆av播放| 国产精品久久久一区麻豆最新章节| 五月天婷婷丁香网| 自慰无码一区二区三区| 91女主播在线观看| 亚洲日本国产| 国产伦精品一区二区三区妓女下载| 狠狠色综合网站久久久久久久| 婷婷久久综合| 精品欧美激情在线观看| 国产精品.xx视频.xxtv| 潘金莲一级淫片aaaaa| 爱爱永久免费视频| 久久福利毛片| 免费又爽又黄禁片视频1000片| 国产精品9999久久久久仙踪林| 免费成人在线电影| 成全视频全集| 国产成人精品在线观看| 久久精品女人毛片国产| 最近2019好看的中文字幕免费| 国产精品午夜国产小视频| 欧美成人高清手机在线视频| 亚洲www永久成人夜色| 97国产成人无码精品久久久| 欧美精品在线一区| 国产精品后入内射日本在线观看| 久久精品人人做| 精品国产一区二区三区久久影院| 日韩精品在线第一页| 精品日本一区二区三区在线观看| 精品一区二区综合| 国产jizz18女人高潮| 少妇欧美激情一区二区三区| 日韩欧美在线观看强乱免费| 一区二区三区电影网| 精品一区二三区| 成人精品小视频| 欧美暴力喷水在线| 香蕉视频网页版| 久久久999精品免费| 在线播放日韩导航| 精品国产一区二区三区久久久| 免费观看黄色的网站| 国产又粗又长免费视频| kk眼镜猥琐国模调教系列一区二区| 最新中文在线视频| 久艹视频在线观看| 黄色小视频在线免费观看| 天天干免费视频| 成人video亚洲精品| 日韩黄色片在线| 国产一区二区精品| 久久久www成人免费无遮挡大片| 日韩西西人体444www| 免费精品国产的网站免费观看| 在线视频国产三级| 福利视频导航一区| 中文字幕欧美日韩一区二区| 天堂网在线.www天堂在线视频| 日韩在线高清视频| 久久国产尿小便嘘嘘| 亚洲人成在线一二| 欧美大片国产精品| 国产精品久久久久久久久久白浆| 国产一区二区三区国产| 久久综合久久八八| 亚洲tv在线| 在线观看亚洲天堂| 欧美高清视频| 亚洲色图激情小说| 国产不卡视频一区| 国产在线视频三区| 欧美视频免费一区二区三区| 久久久亚洲国产美女国产盗摄| 少妇免费毛片久久久久久久久| 免费国产羞羞网站视频| 奇米精品一区二区三区| 国产精品宾馆在线精品酒店| 一区二区三区不卡视频在线观看| 日韩高清人体午夜| 欧美日韩精品高清| 亚欧美无遮挡hd高清在线视频| 嫩草影院中文字幕| 国产激情无码一区二区三区| 成人在线视频免费观看| 久久久综合久久| 91九色91蝌蚪| 五月亚洲综合| 欧美1o一11sex性hdhd| 免费看一级大黄情大片| 国产三级做爰高清在线| 四虎永久免费| 亚洲图片自拍偷拍| 精品成人无码一区二区三区| 免费看片91| 亚洲精品乱码| 亚洲精品www久久久| 久草在线在线视频| 亚洲成色777777女色窝| 色欲av伊人久久大香线蕉影院| 久艹在线视频| 精品美女www爽爽爽视频| 国产一级二级三级视频| 日韩欧美国产午夜精品| 人人妻人人澡人人爽久久av| 亚洲一区二区三区四区av| 色999日韩国产欧美一区二区| 黄色录像一级片| 中文字幕人妻一区二区在线视频| 紧缚捆绑精品一区二区| 99久久久久久中文字幕一区| 国产又粗又长又爽| 欧美一区二区三区图| 欧美交受高潮1| 91在线视频精品| 亚洲精品一区二区毛豆| 国产资源一区| 欧美电影免费网站| 超碰在线人人干| 久久精品99北条麻妃| 国产成人av资源| 狠狠色狠狠色综合日日小说| 久久精品国产亚洲高清剧情介绍| 免费在线观看av网站| 国产在线视频在线观看| 影音先锋导航| 1769国内精品视频在线播放| 久久综合狠狠综合久久综合88| 亚洲精品电影网在线观看| 亚洲人成网7777777国产| 成人激情电影在线看| 亚洲女娇小黑人粗硬| 鲁大师私人影院在线观看| 91久久久亚洲精品| 无码国产精品96久久久久| a在线欧美一区| 一级视频在线免费观看| 2019天天干夜夜操| 国产wwwxxx| 国产69精品一区二区亚洲孕妇| 日韩高清在线观看一区二区| 欧美调教在线| 欧美男人天堂| 国产精品无码在线| 日韩国产高清影视| 日韩一级理论片| 爱情岛论坛亚洲入口| 久久精品国产sm调教网站演员| 国产一区在线免费| ...av二区三区久久精品| 国产视频一二区| 国产成人亚洲综合小说区| www.xxxx国产| 国产精品h视频| 青青草国产成人99久久| 亚洲h在线观看| 亚洲一二三四区不卡| 日韩欧美一区在线观看| 欧美日韩一级二级三级| 亚洲精华液一区二区三区| 欧美最猛性xxxxx(亚洲精品)| 99久久国产综合精品成人影院| 一区二区在线观看视频在线观看| 91中文字精品一区二区| 亚洲国产成人av好男人在线观看| 欧美一区二区三区视频在线观看| 亚洲一区二区三区日韩| 久久夜精品va视频免费观看| 欧美一区 二区 三区| 久久久精品网| 欧美日韩色视频| 青青草综合在线| 亚洲色婷婷综合开心网| 亚洲欧美激情一区二区| 青草综合视频| 中文字幕专区| 日韩精品一区二区三区蜜臀| 亚洲www免费| 欧美综合一区二区三区| 欧美91在线|欧美| 日韩激情网站| 91久久夜色精品国产按摩| 91九色91蝌蚪| 欧美性xxxx极品高清hd直播| 日日日日人人人夜夜夜2017| 国产精品自拍网站| 老熟妇高潮一区二区三区| 人与牲动交xxxbbb| 成人91视频| 黄色免费成人| 国产精品电影在线观看| 中日韩av电影| 国产亚洲成av人片在线观黄桃| 亚洲精品成a人| 一区在线不卡| 国产成人av电影在线| 国产精品欧美激情在线播放| 日韩在线不卡视频| 久久一级大片| 亚洲夜夜综合| 中文字幕亚洲无线码a| a中文字幕www| 国产另类ts人妖一区二区| 女人18毛片水真多18精品| 国产精品无码2021在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 成人精品视频在线| 蜜臀av色欲a片无码精品一区| 欧美在线亚洲综合一区| 1069男同网址| 波多野结衣欧美| eeuss影院130020部| 亚洲二区在线| 国产精品涩涩涩视频网站| 午夜久久福利视频| 亚洲美女又黄又爽在线观看| 亚洲av无码乱码国产精品久久| 一区二区三区伦理片| а√在线中文在线新版| 亚洲成在线观看| av在线下载| 日本久久久久亚洲中字幕| 欧美专区日韩视频| 激情伦成人综合小说| 92国产精品久久久久首页| 91tv亚洲精品香蕉国产一区7ujn| 国产精品理论在线| 婷婷五月综合久久中文字幕| 欧美日韩在线视频播放| 中文字幕亚洲视频| 久久99精品久久久久久野外| 亚洲精选在线视频| 亚洲伦理精品| wwwww黄色| 欧美专区第一页| 精品人妻一区二区三区日产乱码卜| 欧美国产一二三区| heyzo中文字幕在线| 性囗交免费视频观看| 国产一区二区三区不卡在线| 伊人久久大香线蕉精品| jizz在线播放| 国产精品网站在线播放| 免费女人毛片视频| 国产精品夜夜爽| 8×8x拔擦拔擦在线视频网站| 男女午夜激烈无遮挡| 中文字幕精品在线播放| 黑人玩欧美人三根一起进| 国内精彩免费自拍视频在线观看网址| 国产精品亚洲欧美| 欧美老女人另类| 国产欧美日韩在线看| 西野翔中文久久精品字幕| 欧美黑人粗大| 亚洲国产一区二区在线| 岛国av在线免费| 一本色道亚洲精品aⅴ| 欧美激情aⅴ一区二区三区| 91短视频在线观看| 在线观看中文字幕| 欧美亚洲国产一区二区三区va| 国产一区第一页| 摸bbb搡bbb搡bbbb| 成人无码精品1区2区3区免费看| 欧美一区二区三区红桃小说| 国产三级在线播放| 国产精品v欧美精品v日本精品动漫| 国产精品自拍第一页| 欧美xxxx做受欧美| 欧美手机在线视频| 久久婷婷亚洲| 亚洲精品国产精品国自产网站| 最近中文字幕免费mv视频多少集| 国产女人高潮毛片| 小草av在线播放| 亚洲成人精品视频| 狠狠干狠狠操视频| 2024亚洲男人天堂| 精品在线免费观看视频| 欧美特级黄色片| 亚洲最大成人网4388xx| 日本久久一级片| 19j韩国主播韩宝贝在线| 国产精品xvideos88| 国产一区精品二区| 久久久国产欧美| 亚洲五码在线观看视频| 欧美日韩国产高清一区| 在线一区二区日韩| 中文字幕视频在线免费观看| 一区二区三区在线免费看| 在线观看日韩电影| 一区二区三区在线播放视频| 在线观看亚洲专区| 国产95亚洲| 欧美精品欧美极品欧美激情| 99re国产视频| 国产成人精品一区二区免费视频| 国产黄色免费电影| 91日韩精品一区| 中国一区二区三区| 日本超碰在线观看| 91久久伊人青青碰碰婷婷| 国产精品青草综合久久久久99| 日韩欧美亚洲一二三区| 美女被羞羞网站| 国产一二三在线视频| 50路60路老熟妇啪啪| 亚洲直播在线一区| 欧美一级片久久久久久久| 日韩视频免费观看高清在线视频| 四虎地址8848| 91在线视频官网| 91在线国产电影| 国产美女性感在线观看懂色av|