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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
簡單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

編碼規(guī)范

Posted on 2010-09-13 19:04 S.l.e!ep.¢% 閱讀(4076) 評論(1)  編輯 收藏 引用 所屬分類: Team
本文參考資料:
原版:http://1code.codeplex.com/releases/view/51868#DownloadId=148423
譯版:http://1codechs.codeplex.com/releases/view/51227#DownloadId=148734


原則:
(1) 團(tuán)隊(duì)風(fēng)格統(tǒng)一,明確規(guī)則,提高可讀性

1. 字符串類問題

std::wstring
std::string
tstring(TCHAR版本的std::string)

TCHAR
char*
wchar*

char[]
wchar[]

LPCTSTR
LPTSTR

xxstring(自己封裝的string類)

其它庫的 string

""
L""
_T("")

Format() 問題

無論采用哪種string, 是否采用UNICODE,都要規(guī)定好;
??
2. 宏命名規(guī)范
1. 所有字母大寫
2. 單詞之間用_分隔

3. BOOL 還是 bool?
?? TRUE or true?? FALSE or true?

4.名字空間濫用?
1. 一個(gè)Project只需要一個(gè)NameSpace 或 ProjectName.io.xxxxx 的形式

5. 代碼跨平臺兼容?

6. API函數(shù)前面的 :: ?
1. 用于區(qū)分系統(tǒng)API函數(shù)與本地函數(shù)

7. 函數(shù)命名?
1. 采用 "動"+"賓"結(jié)構(gòu),
2. Is + 動 + 賓 結(jié)構(gòu)
3. 意思明確,無歧義

8. 濫用第三方庫?

9. 當(dāng) if 里只有一條語句時(shí)?
if(xxxxxxx)
??? 語句;
or
if(xxxxxxx)
{
??? 語句;
}

10. 函數(shù)的參數(shù)安全性判斷 與 多重判斷 帶來的性能負(fù)累?
A函數(shù)與B函數(shù)有著一樣的參數(shù)
A函數(shù)調(diào)用B函數(shù)
結(jié)果 A函數(shù)對所有參數(shù)進(jìn)行了安全性的判斷
A函數(shù)調(diào)用B函數(shù)時(shí),又重復(fù)作了安全性的判斷

11. 注釋規(guī)范?
1. 文件頭注釋?
2. 函數(shù)注釋?
3. 函數(shù)內(nèi)注釋?

12. 所有返回值都需要處理,即使你不想理它,也要給它加上 UNREFERENCED_PARAMETER 宏
#define UNREFERENCED_PARAMETER(P) (P)

13. 每個(gè)函數(shù)都會有執(zhí)行失敗的時(shí)候(雖然它可能失敗的機(jī)率是萬分之一)但也請小心處理它

14. 關(guān)于其它命名空間里函數(shù)的用法?
#include <vector>
using namespace std;

vector<int> vecTest;

or

#include <vector>
std::vector<int> vecTest;

1. 不要在頭文件中直接使用 using,特別是 using namespace , 這樣別人在引用這個(gè)頭文件時(shí),會出現(xiàn)“名字污染”,可能涉及整個(gè)工程
2. 如果非要使用 using ,在名字空間中使用,這樣不用影響到整個(gè)工程


15. 類與類之間的依賴?
如:
ProjectName::io::CDir? 依賴于? ProjectName::io::CFile
ProjectName::io::CFile 依賴于? ProjectName::util::CString

同個(gè)項(xiàng)目中,類與類之間的依賴是可以理解的,但當(dāng)某天我想用這個(gè)Project中的某個(gè)類時(shí),依賴的文件太多,不容易單獨(dú)抽出來使用

16. C++代碼中是否應(yīng)該使用 goto?

17. 模板中的 typename or class?
統(tǒng)一采用 typename

18. delete or delete[] ?
如: char* p = new char[255];
??? delete p;
還是
??? char* p = new char[255];
??? delete[] p;
??? ?

19. stringstream or sprintf ?

20. 0 或 NULL?

21. CTime or time_t?

22. UINT32 or unsigned int?

23. 設(shè)計(jì)模式的濫用?
為了防止設(shè)計(jì)模式的濫用,未清楚設(shè)計(jì)模式的意圖前,別用它

24. 所有的變量都必須賦予初始值。

25. 關(guān)于注釋,注釋形式不限,但
?? (1)每個(gè)函數(shù)至少要有簡要的注釋;
?? (2)每個(gè)參數(shù)都要說明其用途


26. int* pValue or int *pValue ?

27. if( NULL != p??) or if ( p != NULL??) ?

28. x, y, or width, height?

29. x = (xxx*)y;? or x = dynamic_cast<xxx*>(y) ?
--- 使用后者,因?yàn)楹笳邥M(jìn)行類型判斷,如果不一致會拋出異常
vc6.0要支持向下轉(zhuǎn)型要加入GR開關(guān),而這在vc6.0z中是默認(rèn)關(guān)閉的

30. 采用最直觀的方式寫代碼

31. 語句太長?
寫法1:
00235???? const char *opname =
00236???????? (op==PJ_ICE_STRANS_OP_INIT? "initialization" :
00237???????????? (op==PJ_ICE_STRANS_OP_NEGOTIATION ? "negotiation" : "unknown_op"));

寫法2:
00297???????? CHECK( pj_dns_resolver_create(&icedemo.cp.factory,
00298????????????????????????????????????????????????????????????? "resolver",
00299????????????????????????????????????????????????????????????? 0,
00300????????????????????????????????????????????????????????????? icedemo.ice_cfg.stun_cfg.timer_heap,
00301???????????????????????????????????????????????????????????? ?icedemo.ice_cfg.stun_cfg.ioqueue,
00302???????????????????????????????????????????????????????????? &icedemo.ice_cfg.resolver) );

寫法3:
00397???? /* create the instance */
00398???? status = pj_ice_strans_create("icedemo",???????????????????? /* object name? */
00399????????????????????????????????????????????????? &icedemo.ice_cfg,???????? /* settings???? */
00400????????????????????????????????????????????????? icedemo.opt.comp_cnt,? /* comp_cnt???? */
00401????????????????????????????????????????????????? NULL,????????????????????????? /* user data??? */
00402????????????????????????????????????????????????? &icecb,???????????????????????? /* callback???? */
00403???????????????????????????????????????????????? &icedemo.icest)???????????? /* instance ptr */
00404???????????????????????????????????????????????? ;

寫法4:
00442???? pj_ice_sess_role role = (pj_tolower((pj_uint8_t)rolechar)=='o' ?
00443???????????????????????????????????????????????? ?PJ_ICE_SESS_ROLE_CONTROLLING :
00444????????????????????????????????????????????????? PJ_ICE_SESS_ROLE_CONTROLLED);


寫法5:
00493 #define PRINT(fmt, arg0, arg1, arg2, arg3, arg4, arg5)????? \
00494 ??????????? printed = pj_ansi_snprintf(p, maxlen - (p-buffer),? \
00495?????????????fmt, arg0, arg1, arg2, arg3, arg4, arg5); \
00496 ??????????? if (printed <= 0) return -PJ_ETOOSMALL; \
00497 ??????????? p += printed

32. 當(dāng) if 語句的只有一條語句時(shí),哪種寫法更好?
(1)? if(xxxx)
????? {
???????????? xxxxx;
????? }
(2) if(xxxx)
??????????? xxxxxx;


-----------------------------------------------------------------------------
1. 概覽
1.1. 原則和主旨
高質(zhì)量代碼有如下特質(zhì):
(1) 可讀性,簡單明確, 注釋清楚,突出重點(diǎn), 示例代碼
(2) 一致性, 代碼風(fēng)格統(tǒng)一
(3) 正確性, 經(jīng)過單元測試,pc-lint檢測, 符合文檔描術(shù)要求
(4) 安全性


2.1. 類名以C開頭
??
(1)普通類采用 Cxxx 形式?
????? 例: CSimple
?? (2)模板類采用 CxxxT 形式?
????? 例: CSmartPointorT

2.2. 接口類使用I開頭
??? (1)接口類指純虛類
??? (2)采用 Ixxx 形式
????? 例: ILoggable

2.3. 枚舉類型命名
??? (1)所有字母大寫
??? (2)以 ENUM_ 開頭
??? (3)每個(gè)單詞之間盡量用_分隔
??? (4)具體的值不需要 ENUM_ 開頭
??? 例:enum ENUM_DWMNCRENDERINGPOLICY
??????? {
??????????? DWMNCRP_USE_WINDOWS_TYLE,
??????????? DWMNCRP_DISABLED,
??????????? DWMNCRP_ENABLED,
??????????? DWMNCRP_LAST
??????? };

2.4. 函數(shù)指針類型命名
??? (1)所有字母大寫
??? (2)采用 FN_函數(shù)名_TYPE 的形式
?? 例:
typedef HRESULT (WINAPI *FN_DWMSETWINDOWATTRIBUTE_TYPE)(HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute);

2.5. 函數(shù)指針命名
??? (1) 采用 pfn函數(shù)名 的形式
??? 例:FN_DWMSETWINDOWATTRIBUTE_TYPE pfnDwmSetWindowAttribute = NULL;

名字縮寫規(guī)范:
Manager = Mgr
Message = Msg
asynchronous = asyn
event = evt
object = obj
volume = vol
project = prj
calculate = calc

Feedback

# re: 編碼規(guī)范  回復(fù)  更多評論   

2010-09-10 00:14 by nnnn
6. API函數(shù)前面的 :: ?
1. 用于區(qū)分系統(tǒng)API函數(shù)與本地函數(shù)

自己的函數(shù)就不該取名于api一樣阿,就無須::
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美亚洲专区| 国产综合激情| 亚洲免费人成在线视频观看| 日韩亚洲欧美综合| 国产精品99久久久久久人| 一区二区三区视频免费在线观看| 亚洲免费观看高清完整版在线观看熊 | 欧美成人免费网| 欧美精品一卡| 国产精品男gay被猛男狂揉视频| 国产精品久久久久久久久久免费看 | 免费日韩av电影| 亚洲国产精品久久久久秋霞不卡| 欧美激情片在线观看| 日韩一级在线观看| 久久国产精品一区二区三区| 蜜桃久久av| 国产精品一区二区三区四区| 在线精品视频一区二区| 99av国产精品欲麻豆| 欧美在线日韩| 亚洲日本中文| 午夜欧美理论片| 欧美www视频| 伊人狠狠色j香婷婷综合| 精品91久久久久| 亚洲深夜影院| 久久色在线播放| 日韩视频免费在线| 午夜精品一区二区三区四区| 麻豆精品一区二区综合av| 国产精品国产a级| 亚洲欧洲日韩综合二区| 久久久99爱| 一本色道久久综合狠狠躁篇怎么玩 | 91久久国产综合久久蜜月精品 | 亚洲性人人天天夜夜摸| 美女脱光内衣内裤视频久久影院| 国产精品久久999| 亚洲精品极品| 麻豆久久婷婷| 欧美一级免费视频| 欧美午夜剧场| 一本一本久久a久久精品综合妖精| 麻豆av一区二区三区| 亚洲欧美三级在线| 国产精品毛片一区二区三区| 99精品久久久| 亚洲激情亚洲| 欧美国产在线视频| 亚洲精品国精品久久99热| 蜜臀av在线播放一区二区三区| 香蕉尹人综合在线观看| 国产精品午夜在线| 先锋资源久久| 香蕉精品999视频一区二区| 国产精品国产三级国产aⅴ9色| 一本久道综合久久精品| 日韩一区二区高清| 国产精品电影在线观看| 亚洲综合色丁香婷婷六月图片| 日韩亚洲欧美一区二区三区| 欧美日韩爆操| 亚洲欧美日韩精品久久奇米色影视| 99在线精品免费视频九九视| 欧美日韩国产一区精品一区| 亚洲网在线观看| 亚洲尤物在线| 黄色成人av在线| 女同一区二区| 亚洲图片你懂的| 亚洲国产精品成人va在线观看| 亚洲人体1000| 亚洲欧洲精品成人久久奇米网 | 欧美国产日本韩| 欧美成人免费全部| 亚洲天堂偷拍| 香港久久久电影| 在线观看久久av| 亚洲三级电影全部在线观看高清| 欧美日韩a区| 欧美在线91| 老鸭窝亚洲一区二区三区| 日韩视频在线一区二区| 亚洲天堂免费观看| 韩国成人精品a∨在线观看| 亚洲二区视频| 国产精品一区二区视频| 麻豆91精品91久久久的内涵| 欧美激情亚洲一区| 久久精品国语| 欧美日本在线视频| 久久av一区二区三区漫画| 久久尤物电影视频在线观看| 在线亚洲免费视频| 久久精品噜噜噜成人av农村| 一区二区三区日韩在线观看| 久久国产精品久久国产精品| 夜夜嗨一区二区| 久久久精品国产免费观看同学| 中文国产成人精品| 久久噜噜噜精品国产亚洲综合| 亚洲一二三区视频在线观看| 卡通动漫国产精品| 欧美一区二区在线| 欧美区一区二区三区| 久久尤物视频| 国产精品推荐精品| 亚洲人成网站精品片在线观看| 国产亚洲美州欧州综合国| 一区二区三区精品视频| 亚洲精品日韩在线观看| 久久成人在线| 欧美亚洲视频| 国产精品va在线播放| 最新国产成人av网站网址麻豆| 国外成人性视频| 亚洲欧美韩国| 欧美日韩国产美| 亚洲香蕉伊综合在人在线视看| 最新中文字幕亚洲| 午夜精品剧场| 亚洲视频欧美在线| 每日更新成人在线视频| 欧美一区二区高清在线观看| 欧美日韩亚洲一区二| 亚洲福利视频网站| 在线免费观看日本欧美| 久久国产福利| 久久精品亚洲精品国产欧美kt∨| 午夜在线视频一区二区区别| 国产精品日韩欧美综合| 亚洲久色影视| 一本久久综合亚洲鲁鲁| 欧美精品成人一区二区在线观看| 欧美激情久久久久| 亚洲日本欧美在线| 欧美精品一区二区三区一线天视频| 欧美二区在线播放| 亚洲国产精品第一区二区三区 | 亚洲精品三级| 9色精品在线| 欧美日韩在线大尺度| 夜夜嗨网站十八久久| 亚洲欧美国产视频| 国产婷婷成人久久av免费高清| 午夜精品短视频| 欧美xart系列在线观看| 亚洲精品久久久蜜桃| 欧美日韩成人在线| 亚洲影院在线| 免费观看久久久4p| 一区二区三区产品免费精品久久75 | 久久婷婷久久| 欧美阿v一级看视频| 91久久国产精品91久久性色| 欧美激情片在线观看| 在线亚洲自拍| 久久久久国产免费免费| 亚洲国产精品视频| 欧美日韩三级视频| 欧美亚洲专区| 欧美激情一二区| 亚洲欧美国产另类| 在线观看精品视频| 欧美午夜精品理论片a级按摩| 亚洲欧美日韩天堂| 欧美成在线观看| 亚洲在线不卡| 在线观看一区二区精品视频| 欧美精品一线| 久久久91精品国产| 亚洲精品国久久99热| 欧美一区综合| 亚洲精选大片| 国内综合精品午夜久久资源| 欧美日本精品| 欧美在线一级va免费观看| 欧美黄在线观看| 久久xxxx| 亚洲综合精品四区| 亚洲精品视频在线观看网站| 国产欧美日韩综合一区在线播放 | 国产亚洲精品久久飘花 | 国产精品国产三级国产普通话99 | 国产精品一区二区久久| 性欧美大战久久久久久久久| 欧美激情一区二区三区在线视频观看 | 日韩一区二区免费看| 久久久久久一区二区三区| 一区二区三区视频免费在线观看| 国产一区二区三区高清| 欧美视频三区在线播放| 狂野欧美一区| 久久av在线| 亚洲在线不卡| 中文在线资源观看网站视频免费不卡| 蜜臀a∨国产成人精品| 欧美在线一区二区| 香蕉久久夜色精品国产使用方法|