【文章內(nèi)容簡介】
BOOL IsChineseString(const char* sInStr)。例:static BOOL IsChineseChar(const char* s){ ……。}BOOL IsChineseString(const char* sInStr){for(int ii = 0。 ii strlen(sInStr)。 ii++){ if(!IsChineseChar(sInStr + ii)) { return FALSE。 }}return TRUE。}規(guī)則 4: 簡單應(yīng)用應(yīng)創(chuàng)建下列目錄結(jié)構(gòu),模 塊程序代碼應(yīng) 分別放置到 src/include 目錄與src/source 目錄 ,編譯文件放置到 src/source 目錄,編譯后的可執(zhí)行文件放置到 rel/bin 目錄,靜態(tài)庫或動態(tài)庫放置到 rel/lib 目錄 (應(yīng)用使用的外部庫及頭文件放置在 rel 同級的 lib 與 lib/include 目錄)。W o r k D i r e c t o r ys r cs o u r c em a k e f i l e* . c p p* . ci n c l u d e* . h p p* . hr e lb i nl i b規(guī)則 5: 復(fù)雜應(yīng)用應(yīng)分子系統(tǒng)創(chuàng)建目錄結(jié)構(gòu),模 塊程序代 碼應(yīng)分別放置到 src/module/include 目錄與 src/module/source 目錄,應(yīng)用編譯文件放置到 src 目錄,編譯后的可執(zhí)行文件放置到 rel/bin 目 錄,靜態(tài)庫或動態(tài)庫放置到 rel/lib 目錄。 (應(yīng)用使用的外部庫及頭文件放置在 rel 同級的 lib 與lib/include 目錄)規(guī)則 6: 各子系統(tǒng)可以創(chuàng)建獨立的編譯文件并放置到 src/module/source 目錄,編譯后的可執(zhí)行文件放置到 rel/bin/module 目錄或 rel/bin,靜態(tài)庫或動態(tài)庫放置到 rel/lib/module 或 rel/lib 目錄。此時,應(yīng)創(chuàng)建一個編譯全部子系統(tǒng)的編譯文件或腳本放置到 src 目錄。W o r k D i r e c t o r ym o d u l e 1s o u r c em a k e f i l e* . c p p* . ci n c l u d e* . h p p* . hr e lb i nl i bm o d u l e 2s o u r c em a k e f i l e* . c p p* . ci n c l u d e* . h p p* . hm a k e f i l e | m a k e . s hs r cm o d u l e 1b i nl i bm o d u l e 2b i nl i b 一一一 命名規(guī)則 7: 命名應(yīng)遵循下列原則:? 應(yīng)簡單清晰通俗;? 應(yīng)使用英文命名,禁止使用中文命名;? 應(yīng)盡量選擇通用詞匯;? 應(yīng)使用完整單詞或詞組,避免使用 簡稱;? 應(yīng)準確表達其含義;? 避免同時使用易混淆的字母與數(shù)字,如 1 與 l,0 與 o;? 禁止使用只靠大小寫區(qū)分的多個名稱;? 多單詞組成的名稱,單詞 的首字母應(yīng)大寫,如 FileName。規(guī)則 8: 名稱太長超過 15 字符時應(yīng)使用簡稱。 簡稱應(yīng)遵循:? 應(yīng)使用標準的或常用的簡寫,如 Temp(tmp),Length(len);? 應(yīng)用范圍內(nèi)簡寫應(yīng)一致且規(guī)范,避免各 處簡寫各不相同;? 簡寫可以使用單詞的前一個或多個字母,如 Channel(Chan)、Connect(Conn);也可以使用去掉所有的不在詞頭的元音字母,如 screen(scrn),primtive(prmv);? 多個單詞組成的名稱,使用有意 義的單詞或去掉無用的后 綴并簡稱,如 Count of Failure(FailCnt),Paging Request(PagReq)。 文件命名規(guī)則 9: 文件命名應(yīng)使用模塊名的小寫字母形式。禁止使用 漢字或大、小寫字母混用作 為代碼文件名。 變量命名規(guī)則 10: 變量命名主要采用匈牙利命名法,格式為[作用域范圍前綴_][前綴] 基本類型+名稱。其中,作用域范圍前綴、前綴以小寫字母表示且可選,基本類型以小寫字母表示且必選。常用前綴符前綴符 含義 例子g_ 全局變量 g_stSystem, g_cMacType, g_strSysNames_ 靜態(tài)變量 s_nCurCnt,s_strStaticName,s_pSysTimem_ 類數(shù)據(jù)成員 m_nBankType,m_sWrkBuffer, m_strMyNameh 句柄類變量 hnFileHandle,hnSocket,hpProcHandlep 指針類變量 psReadBuff,pstrRetStr,ppTargeta 數(shù)組類變量 anPorts,asSendBuffers,apWrkBuffs常用基本類型符前綴符 含義 例子b bool bOK,bQuit,bFindc、ch char cFlag,cBankType,chSubSystemTypes char [] sSysName,sStaticName,sTimeStrstr CString、String strSysName, strStaticName, strTimeStrby unsign char [] byMacStr,bySendBuffer, bySrcBuffern、i int nCnt,nPort,nRetCodel long lFileSize,lOffset,lCountd double dAmount,dSumVal,dWrkValf float fAmount, fSumVal, fWrkValui/ul unsigned int/long uiCnt, uiFileSize, ulRetCountw WORD 與 unsigned int 等價的 32 位整數(shù) dw DOUBLE WORD 與 unsigned long 等價的 64 位整數(shù)em 枚舉型變量 emDays, emColors, emSetst 結(jié)構(gòu)型編碼 stSystem,stCtrlData, stSet規(guī)則 11: 禁止使用單字母作為變量名。但下列常用 單 字母變量除外:常用單字母變量變量 類型 說明i,j,k,m,n int 循環(huán)變量c char 單字符變量s char [] 字符數(shù)組變量x,y int 位置變量p char* 指針變量 常量與宏命名規(guī)則 12: 常量與宏應(yīng)使用全大寫名稱,多 詞組名稱使用 _分隔各單詞,并使用斷行注 釋說明其含義如:const int MAX_BUFF_SIZE = 1024 /// 最大存儲區(qū)字節(jié)數(shù)define MAX_FRAME_SIZE 512 /// 單幀的最大長度規(guī)則 13: 作為錯誤碼或返回碼的宏, 應(yīng)使用 E_類型_NAME 形式,并使用斷行注釋說明其含義。define E_FILE_NOTFOUND 61101001 /// 文件不存在!define E_DB_SELECT_FAIL 62301050 /// 選取數(shù)據(jù)庫失敗!define E_SYS_INVALID_STATUS 62301001 /// 系統(tǒng)狀 態(tài)非法!規(guī)則 14: 作為編譯條件的宏, 應(yīng)使用_NAME_ 形式。如:ifdef _NONE_THROW_endif…ifndef _FOR_CCPC_endif規(guī)則 15: 為防止重復(fù)包含而定義的頭文件預(yù)處理宏,應(yīng)使用__NAME_HPP__(C++)或__NAME_H__(C)形式,其中 NAME 為模塊名稱。如:ifndef __CSIGNAL_HPP__define __CSIGNAL_HPP__…endififndef __CSIGNAL_H__define __CSIGNAL_H__…endif 類命名規(guī)則 16: 類命名應(yīng)使用字符 C|T+名稱形式。其中名稱應(yīng)使用名詞或名詞短語,且每個單詞首字母大寫。如:CSignal ,CFile,CString,CTagMgr。 函數(shù)命名規(guī)則 17: 函數(shù)命名應(yīng)使用能夠表達函數(shù)功能的英文動詞或動賓結(jié)構(gòu)短語,且每個單詞的首字母大寫。如:GetName(),StrTrimLeft(), KillProc()。禁止在函數(shù)名稱中使用非字母或數(shù)字的其他字 符,如下劃線_。建議 1: 不應(yīng)在函數(shù)名中使用數(shù)字,如: GetName1(),Kill2()。但數(shù)字是短 語一部分的,可以使用,如 KillSigusr2()。 參數(shù)命名建議 2: 函數(shù)或方法的參數(shù)命名參考變量命名,但 應(yīng)使用 In,Out、Ret 等簡寫修飾參數(shù),增加函數(shù)聲明的可讀性。如:BOOL IsSpaceStr(LPCSTR sInStr, ULONG nMaxLen = 0, ULONG* plRetOffset = NULL)。void HexToBin(LPCSTR sInStr ,BYTE * psOutStr,ULONG * plRetSize = NULL)。 一一一 注釋規(guī)則 18: 程序代碼中增加注釋的目標是幫助對程序的閱讀理解,不宜太多或太少,太多則會對閱讀產(chǎn)生干擾,太少則不利于代 碼理解,因此只在必要的地方才加注釋,且準確、易懂、簡潔。 文檔化注釋 文件注釋規(guī)則 19: 文件注釋放置在文件頭部,主要包括此文件的功能說明, 編寫人和修改人以及編寫和修改的日期,版權(quán)聲明,版本等信息,應(yīng)盡量使用中文。注釋格式如下:/** * @file * @brief 文件 簡要說明 * * 文件詳細說明 * * @author * 時間 作者 1 貢獻 1 * 時間 作者 2 貢獻 2* 時間 作者 3 貢獻 3** @version* 時間 版本 1 簡要版本 說明 1* 時間 版本 2 簡要版本 說明 2** @par 其他重要信息:* 其他重要信息說明* * @warning 警告信息* * @par 版權(quán)信息:* 版本聲明信息 */例:/** * @file * @brief UNIX 信號函數(shù)封裝類 * * 本類封裝部分 UNIX 信號處理函數(shù),簡化在 UNIX 下編寫信號處理程序的編碼難度。br * 本類主要提供下列三類方法: * 信號集合管理,提供信號集合的添加、刪除、判斷功能; * 信號句柄管理,提供設(shè)置與獲取信號處理函數(shù)功能; * 信號處理,設(shè)置與獲取阻塞信號集、發(fā)送信號、等待信號功能。 ** @author * 20220305 lny 創(chuàng)建初始版本 * 20220307 lny 添加文檔注釋信息 * @version* 20220305 創(chuàng)建初始版本 * 20220307 添加文檔注釋信息 * * @warning 本 類不能在 WIN32 操作系統(tǒng)使用。** @par 版權(quán)信息:* Copyright(C) 20222022 CNCC/CDC*/注:粗體字為需定制化的內(nèi)容;蘭色字為可選的內(nèi)容,如果沒有這些內(nèi)容, 請刪除。下同。 類注釋規(guī)則 20: 類注釋放置在類聲明前,主要介 紹類的功能及相關(guān) 說明。注 釋格式如下:/** * @brief 類簡 要說明 * * 類詳細說明 * * @par 其他重要信息* 其他重要信息說明** @par 變更歷 史: * 時間 作者 修改說明*/例:/** * @brief UNIX 信號處理函數(shù)封裝類 * * 本類封裝部分 UNIX 信號處理函數(shù),簡化在 UNIX 下編寫信號處理程序的編碼難度。br * 本類主要提供下列三類方法: * 信號集合管理,提供信號集合的添加、刪除、判斷功能; * 信號句柄管理,提供設(shè)置與獲取信號處理函數(shù)功能; * 信號處理,設(shè)置與獲取阻塞信號集、發(fā)送信號、等待信號功能。 * * @warning 本 類不能在 WIN32 操作系統(tǒng)使用。 */class CSignal{ …} 函數(shù)或方法注釋規(guī)則 21: 函數(shù)或方法注釋放置在其聲明前,主要介 紹 函數(shù)的功能、參數(shù)、返回值、異常、使用說明、范例、引用關(guān)系、變更信息等信息。注 釋格式如下:/** * @brief 函數(shù)功能 簡要說明 * @param [in|out] 參數(shù)名稱 1 參數(shù) 1 簡要說明;* @param [in|out] 參數(shù)名稱 2 參數(shù) 2 簡要說明。 * @return 返回 值說明 * 返回值 1 返回值 1 說明; * 返回值 2 返回值 2 說明。 * @exception 異常說明* 異常 1 異常 1 說明; * 異常 2 異常 2 說明。 * * @