版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
讓虛擬世界和現(xiàn)實(shí)世界成為相互的起點(diǎn)和終點(diǎn)工具開發(fā)支持管理蝸牛游戲程序編碼規(guī)范(版本0.1)規(guī)范說明: 1一、命名規(guī)則 2二、程序的版式 3三、注釋 5四、服務(wù)端平臺無關(guān) 7五、服務(wù)端表格操作 7六、客戶端文件讀寫 8七、客戶端內(nèi)存操作 8八、腳本內(nèi)的注釋 9規(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ù)名用大寫字母開頭的單詞組合而成,接口類名以I開頭;3.常量全用大寫的字母,用下劃線分割單詞,盡量不要使用宏;4.類的數(shù)據(jù)成員加前綴m_,全局變量加前綴g_,靜態(tài)變量加前綴s_;5.變量名第一個(gè)字母小寫,使用“名詞”或“形容詞+名詞”的詞義表示法;示例:·局部變量char*pStringBuffer;int&stringFindResult;boolisEngineStartup;·函數(shù)命名unsignedintGetVoyageCoreState();staticboolGetVoyageServiceCount(int&count);·結(jié)構(gòu)類型structNodeValue{ intwidth;intheight;}·枚舉類型(枚舉值必須大寫且有前綴)enumVoyageSupportType{ VOYAGE_OS_SUPPORT_INVALID=1, VOYAGE_OS_SUPPORT_WINDOWS=2}·聯(lián)合類型unionColor{ unsignedchararrColor[3]; structColorRGB { unsignedcharr; unsignedcharg; unsignedcharb; };};·類類型……… //獲得字符串長度。 intlength=(int)strlen(pString); //如果長度為空,直接將當(dāng)前String類對象置空。 if(0==length) { m_pString=NULL; m_length =0; }………注釋對外暴露的模塊接口全部要求使用“doxygen”注釋對文件、類、函數(shù)、變量進(jìn)行注釋;所有文件和函數(shù)必須有功能說明注釋,這里不要使用“doxygen”注釋(便于生成程序文檔);代碼塊的起始處必須有該代碼塊的功能說明注釋;4.通信的消息和命令必須有功能和參數(shù)注釋。“doxygen”注釋示例:·接口文件首部/** @file varithmetic.h @brief IString模塊是voyage引擎開發(fā)以及游戲開發(fā)所使用的 算法集合模塊。 @author ArmterlaX @date 2007.12.1*/·接口函數(shù)注釋注意:這些接口注釋都是寫在頭文件里的。注意:接口參數(shù)要寫[IN]或者是[OUT]以表明參數(shù)是輸入?yún)?shù)還是輸出參數(shù)。函數(shù)接口注釋/** @brief 對任意類型元素的數(shù)組進(jìn)行快速排序。 @param pHead [IN]元素?cái)?shù)組首地址。 @param ppDstHead [OUT]輸出一組經(jīng)過排序的指針。*/void QuickSort(void*pHead,void**ppDstHead);·類接口注釋/** @brief IString類是用于在Voyage引擎內(nèi)部進(jìn)行字符串處理的類。 IString類可以完成快速的字符串連接、分割、字串查找、 字串修改等功能。*/classIString{public: /** @brief IString默認(rèn)構(gòu)造函數(shù)。 @remarks 使用默認(rèn)構(gòu)造函數(shù)構(gòu)造IString對象不會(huì) 申請任何堆內(nèi)存。 */ IString(); /** @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(constchar*pString);/** @brief 析構(gòu)函數(shù),如果當(dāng)前IString類對象已經(jīng)申請了堆內(nèi)存, 該函數(shù)會(huì)釋放這個(gè)堆內(nèi)存。*/~IString();………};·通信的消息和命令/**\brief聊天內(nèi)容信息\param聊天類型,類型int\param聊天內(nèi)容,類型wstring*/MSG_SERVER_SPEECH=1001模塊內(nèi)部注釋示例:·文件首部/* file $FILE$ brief 文件說明 author%USERNAME% date $DATE$*/·函數(shù)注釋//做地形的可視檢測intTerrainSubObject::IsVisible(intx,intz)·變量注釋int ValCol; //修改表格的第幾列數(shù)據(jù)服務(wù)端平臺無關(guān)服務(wù)端程序不要使用依賴于操作系統(tǒng)的API和數(shù)據(jù)類型,以及和操作系統(tǒng)相關(guān)的規(guī)則,以便于未來Windows和Linux平臺切換。服務(wù)端表格操作服務(wù)端表格“Record”的名稱定義也要符合命名規(guī)范;在操作時(shí)不能直接用數(shù)字表示列號;示例://表格列號的定義 enum{ CCR_CLONE_SERIAL=0, CCR_CYCLE_TIME, CCR_INTO_COUNT, CCR_COL_COUNT};… //表格定義和訪問pKernel->AddRecord(index,"CloneCountRec",CCR_COL_COUNT,128); pKernel->SetRecordColType(index,"CloneCountRec",CCR_CLONE_SERIAL,VARTYPE_INT);//副本號 pKernel->SetRecordColType(index,"CloneCountRec",CCR_CYCLE_TIME,VARTYPE_INT);//進(jìn)入時(shí)間 pKernel->SetRecordColType(index,"CloneCountRec",CCR_INTO_COUNT,VARTYPE_INT);//進(jìn)入次數(shù) 客戶端文件讀寫客戶端必須使用引擎提供的API進(jìn)行文件的打開、讀寫、關(guān)閉等操作。示例:HANDLEhFile=_CORE_API->fio->_CreateFile(filename, GENERIC_READ,0,OPEN_EXISTING); if(hFile==INVALID_HANDLE_VALUE) returnfalse; DWORDLength=_CORE_API->fio->_GetFileSize(hFile,NULL); if(Length>0){ char*pBuffer=newchar[Length+1];_CORE_API->fio->_ReadFile(hFile, (void*)pBuffer,Length,NULL);} _CORE_API->fio->_CloseHandle(hFile);客戶端內(nèi)存操作1.分配內(nèi)存并調(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=newCUnit[2];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ì)調(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*&)p);//這樣就能正確地調(diào)用析構(gòu)函數(shù)Voy_Delete和Voy_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*&)p);5.如果某個(gè)類的構(gòu)造函數(shù)需
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江大學(xué)《全球變化與地表過程》2023-2024學(xué)年第一學(xué)期期末試卷
- 漳州職業(yè)技術(shù)學(xué)院《服裝結(jié)構(gòu)設(shè)計(jì)研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 生產(chǎn)調(diào)度軟件市場競爭格局
- 專業(yè)基礎(chǔ)-房地產(chǎn)經(jīng)紀(jì)人《專業(yè)基礎(chǔ)》模擬試卷2
- 房地產(chǎn)交易制度政策-《房地產(chǎn)基本制度與政策》點(diǎn)睛提分卷3
- 先進(jìn)班組長先進(jìn)事跡材料
- 二零二五年電子競技俱樂部店鋪?zhàn)赓U合同樣本6篇
- 外研版小學(xué)英語六年級下冊小升初一般現(xiàn)在時(shí)專項(xiàng)訓(xùn)練(含答案)
- 信陽農(nóng)林學(xué)院《機(jī)械設(shè)計(jì)基礎(chǔ)2》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年智慧養(yǎng)老項(xiàng)目合同2025版協(xié)議書2篇
- 福建省福州市2023-2024學(xué)年高一上學(xué)期期末考試物理試卷 附答案
- 2024-2030年中國IT運(yùn)營管理(ITOM)軟件行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報(bào)告
- 中國聯(lián)合網(wǎng)絡(luò)通信有限公司招聘筆試題庫2024
- 圍欄護(hù)欄施工合同協(xié)議書
- 2021版血液凈化標(biāo)準(zhǔn)操作規(guī)程考核試題及答案
- 第5課《弘揚(yáng)勞動(dòng)精神勞模精神工匠精神》第1框《理解勞動(dòng)精神勞模精神工匠精神》-【中職專用】《職業(yè)道德與法治》同步課堂課件
- 2025美國國防部財(cái)年美軍武器裝備采購預(yù)算中文版
- 70歲換證三力測試題附答案
- 中華醫(yī)學(xué)會(huì)利益沖突聲明模板
- 帶你玩轉(zhuǎn)VR虛擬現(xiàn)實(shí)智慧樹知到期末考試答案2024年
- DAM10KW中波發(fā)射機(jī)各單元的檢測與調(diào)整指導(dǎo)示意圖
評論
0/150
提交評論