




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、蝸牛游戲程序編碼規(guī)范(版本ol ) 規(guī)范說明: 一、命名規(guī)貝y 、 程序的版式. 三、 注釋 四、 服務(wù)端平臺(tái)無關(guān) 五、 服務(wù)端表格操作 六、 客戶端文件讀寫 七、 客戶端內(nèi)存操作 八、 腳本內(nèi)的注釋 規(guī)范說明: 制定該規(guī)范的目的是讓程序清晰易懂、易維護(hù)、易管理。該規(guī)范為強(qiáng)制規(guī)范,必 須執(zhí)行,如果有沒涉及的地方請參考高質(zhì)量C+-c編程指南。當(dāng)所在編程環(huán)境(如 MFC Linux)與本規(guī)范有并異時(shí),可以使用所在編程環(huán)境的規(guī)范,但是同一個(gè)項(xiàng)冃必須 是統(tǒng) 一的規(guī)范。 最后希望大家都能養(yǎng)成一個(gè)良好的程序習(xí)慣,一個(gè)好的習(xí)慣受益終身! 命名規(guī)則 1 所有命名應(yīng)當(dāng)直觀且可拼讀,并具有實(shí)際意義; 2類名和函數(shù)
2、名用大寫字母開頭的單詞組合而成,接口類名以I開頭; 3常量全用大寫的字母,用下劃線分割單詞,盡量不要使用宏; 4 類的數(shù)據(jù)成員加前綴ni_全局變量加前綴g_,靜態(tài)變量加前綴s_; 5變量名第一個(gè)字母小寫,使用“名詞”更“形容詞 +名詞”的詞義表示法; 示例: 局部變量 char *pStri ngBuffer ; int static bool GetVoyageServiceCo un t(i nt 結(jié)構(gòu)類型 struct NodeValue int width; int height; 枚舉類型(枚舉值必須大寫且有前綴) enumVoyageSupportType VOYAGE OS SU
3、PPORT INVALID 二1, VOYAGE_OS_SUPPORT_WINDOWS 二 2 聯(lián)合類型 union Color unsigned cha r arrColor3; struet ColorRGB unsigned char r; unsigned char g; unsignedb; char ; 類類型 class Object int m_width;/ int m_height;/ void SetValue( virtual int GetAreaO ; inline int GetWidthO ; ; 抽象類 int width, int height); /成員函
4、數(shù) /虛函數(shù) /內(nèi)聯(lián)函數(shù) class ISpriteManager public: virtual int virtual bool ; 自定義類型 GetSpritelDO = 0; IsSpriteExist () 0; typedef unsigned int Number: 全局變量 wt)靜態(tài) 變量 static char (我們不主張使用全局變 g_howManyPeop1e; *s_pStringBuffer; 常量 const float SPRINT_RADIUS 二 100.Of; 回調(diào)函數(shù) typedef int (*CALLBACK_SYSTEMINIT_FUNC)(I
5、Kernel * pKernel); 程序的版式 1- 一行代碼只做一件事情,只寫一條語句,語句排版整齊;2.關(guān)鍵字之后要留空格,賦 值操作符、比較操作符、算術(shù)操作符、邏輯操作符、位域 操作符,如“二” “ +二”“二”、“二 ”“ +”、“、“ (i5) else if (nb) do while (ab); switch (n) easel: break 代碼塊 /獲得字符串長度。 int length 二(int )strlen(pString); 如果長度為空,直接將當(dāng)前String類對象置空 if (0 二二 length) m_pString = NULL; m_length 二
6、0; 三、注釋 1. 對外暴露的模塊接口全部要求使用“ doxygen”注釋對文件、類、函數(shù)、變量進(jìn)行注 釋; 2. 所有文件和函數(shù)必須有功能說明注釋,這里不要使用“ doxygen注釋(便于生成 程序文檔); 3. 代碼塊的起始處必須有該代碼塊的功能說明注釋; 4. 通信的消息和命令必須有功能和參數(shù)注釋。 “ doxygen”注釋不例: 接口文件首部 /* filevarithmetic.h briefIString模塊是voyage引擎開發(fā)以及游戲開發(fā)所使用的 算法集合模塊。 authorArmterla X date2007. 12. 1 */ 接口函數(shù)注釋 注意:這些接口注釋都是寫在頭
7、文件里的。 注意:接口參數(shù)要寫IN或者是OUT以表明參數(shù)是輸入?yún)?shù)還是輸出參數(shù)函數(shù)接口注釋 brief param param * * 對任意類型元素的數(shù)組進(jìn)行快速排序。 pHead IN元素?cái)?shù)組首地址。 ppDstHead OUT輸岀一組經(jīng)過排序的指針。 */ void Quicksort ( void *pHead, void *ppDstHead); 類接口注釋 /* brief IString類是用于在Voyage引擎內(nèi)部進(jìn)行字符串處理的類。 IString類可以完成快速的字符串連接、分割、字串查找、字串修改 等功能。 */ class IString public : /* brie
8、f IString默認(rèn)構(gòu)造函數(shù)。 remarks使用默認(rèn)構(gòu)造函數(shù)構(gòu)造IString對象不會(huì) 申請任何堆內(nèi)存。 */ IStringO ; /* brief使用標(biāo)準(zhǔn)字符串構(gòu)造IString類對象。 param pString IN指定源字符串。也就是使用哪個(gè)字符串構(gòu)造當(dāng)前 IString 對象。 remarks這個(gè)構(gòu)造辦法會(huì)申請堆內(nèi)存,構(gòu)造時(shí)調(diào)用一次堆分配。分配空間大小 與參數(shù)指定的字符串長度加1相等。 */ IString ( const char * pString): /* brief析構(gòu)函數(shù),如果當(dāng)前IString類對象已經(jīng)申請了堆內(nèi)存, 該函數(shù)會(huì)釋放這個(gè)堆內(nèi)存。 */ 、IString
9、 (); ; 通信的消息和命令 /* brief聊天內(nèi)容信息 param聊天類型,類型int param聊天內(nèi)容,類型wstring */ MSG_SERVER_SPEECH二1001模塊內(nèi)部注釋示例: 文件首部 /* author %USERNAME% file$FILE$ 文 brie件說明 date $DATE$ */ 函數(shù)注釋 /做地形的可視檢測 int TerrainSubObject:IsVisible( int x, int z) 變量注釋 int ValCol; /修改表格的第幾列數(shù)據(jù) 四、服務(wù)端平臺(tái)無關(guān) 1. 服務(wù)端程序不要使用依賴于操作系統(tǒng)的API和數(shù)據(jù)類型,以及和操作系統(tǒng)
10、相關(guān)的規(guī)貝 以便于未來Windows和Linux平臺(tái)切換。 五、服務(wù)端表格操作 1服務(wù)端表格“ Record的名稱定義也要符合命名規(guī)范; 2. 在操作時(shí)不能直接用數(shù)字表示列號; 示例: /表格列號的定義 enum CCR_CLONE_SERIAL = 0, CCR_CYCLE_TIME, CCR_INT0_C0UNT, CCR_C0L_C0UNT ; /表格定義和訪問 pKernel-AddRecord(index, CloneCountRec,CCR_C0L_C0UNT, 128); pKernelSetRecordColType(index , “CloneCountRec, CCR_CL
11、ONE_SERIALV, ARTYPE_INT) : / 副本 號 pKernelSetRecordColType( index , CloneCountRec, CCR_CYCLE_TIME, VARTYPE_INT); / 進(jìn) 入時(shí)間 pKernel-SetRecordColType(index, CloneCountRec, CCR_INT0_C0UNT, VARTYPE_INT); / 進(jìn) 入次數(shù) 六、客戶端文件讀寫 1. 客戶端必須使用引擎提供的API進(jìn)行文件的打開、讀寫、關(guān)閉等操作。示例: HANDLE hFile 二 _CORE_API-fio-_CreateF訂e(filena
12、me, GENERIC_READ, 0, 0PEN_EXISTING); 辻(hFile 二二 INVALID_HANDLE_VALUE) return false ; DWORD Length 二 _CORE_API-fio-_GetFileSize(hFile, NULL): 辻(Length 0) char pBuffer 二 newcharLength + 1; _CORE_APIfio_ReadFile(hFile, (void *)pBuffer, Length, NULL); _CORE_API-fio-_C1oseHandle(hFile); 七、客戶端內(nèi)存操作 1. 分配內(nèi)存
13、并調(diào)用默認(rèn)構(gòu)造函數(shù): char *p 二 Voy_New( char, 23);等價(jià)于 char *p 二 newchar 23; CUnit *p 二 Voy_New(CUnit, 2):等價(jià)于 CUnit *p 二 newCUnit2; CUnit *p 二 Voy_New(CUnit, 1):等價(jià)于 CUnit *p 二 newCUnit; 2. 釋放內(nèi)存并調(diào)用析構(gòu)函數(shù): Voy_Delete (p); 如果P是某個(gè)類的指針,如: CUnit *pUnit 二 Voy_New(CUnit, 2); char *P 二(char *)PUnit; Voy_Delete(P); 這個(gè)時(shí)候不會(huì)
14、調(diào)用CUnit的析構(gòu)函數(shù),因?yàn)閭鹘oVoy_Delete的指針是一個(gè)char*的指 針,Voy_Delete認(rèn)為char*指針沒有析構(gòu)函數(shù)。 因此,這種情況下,必須把P轉(zhuǎn)換為Voy_Delete可接受的格式:(對指針的引用) Voy_Delete(CUnit * /這樣就能正確地調(diào)用析構(gòu)函數(shù) Voy_Delete和Vo y_Free會(huì)檢查傳入的指針是否為空,也會(huì)在刪除后自動(dòng)把傳入的指針設(shè) 為空。 3. 如果只想分配內(nèi)存,而不想調(diào)用構(gòu)造函數(shù),可以調(diào)用: char *p 二 Voy_Malloc( char, 1024); 4. 如果只想釋放內(nèi)存,而不想調(diào)用析構(gòu)函數(shù),可以調(diào)用: Voy_Free (p); 或者: Voy_Delete( char * 5. dl果某個(gè)類的構(gòu)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市級語文教研組年度工作計(jì)劃
- 新外研版五年級上冊英語學(xué)習(xí)反饋計(jì)劃
- 工業(yè)車間離心式排風(fēng)機(jī)施工方案及技術(shù)措施
- 交通運(yùn)輸質(zhì)量保證技術(shù)措施
- 七年級英語下冊作文范例與解析范文
- 荒山造林項(xiàng)目施工安全質(zhì)量保證措施
- 幼兒園教科研工作績效考核計(jì)劃
- 綠色護(hù)理服務(wù)推廣計(jì)劃
- 部編版二年級下冊語文園地四寫話思維訓(xùn)練范文
- 小學(xué)班主任學(xué)科教學(xué)培訓(xùn)心得體會(huì)他
- 初三第一學(xué)期家長會(huì)
- 2022-2023學(xué)年天津市北辰區(qū)八年級(下)期末語文試卷
- 位置隨動(dòng)系統(tǒng)的MATLAB計(jì)算及仿真畢業(yè)設(shè)計(jì)說明書
- 辦公樓裝飾裝修工程施工組織設(shè)計(jì)方案
- 勞務(wù)合同保證金合同模板
- 湖南省長沙市2024年中考語文真題試卷(含答案)
- 污水管網(wǎng)工程竣工驗(yàn)收報(bào)告
- DB34∕ 1659-2022住宅工程質(zhì)量常見問題防治技術(shù)規(guī)程
- 2023-2024學(xué)年安徽省安慶市高二(下)期末考試物理試卷(含答案)
- 安全文明施工和環(huán)境保護(hù)措施
- 單證員崗位說明書
評論
0/150
提交評論