二、命名規則:
1、變量名的命名規則
①、變量的命名規則要求用“匈牙利法則”。即開頭字母用變量的類型,其余部分用變量的英文意思或其英文意思的縮寫,盡量避免用中文的拼音,要求單詞的第一個字母應大寫。
即: 變量名=變量類型+變量的英文意思(或縮寫)
對非通用的變量,在定義時加入注釋說明,變量定義盡量可能放在函數的開始處。
見下表:
bool(BOOL) 用b開頭 bIsParent
byte(BYTE) 用by開頭 byFlag
short(int) 用n開頭 nStepCount
long(LONG) 用l開頭 lSum
char(CHAR) 用c開頭 cCount
float(FLOAT) 用f開頭 fAvg
double(DOUBLE) 用d開頭 dDeta
void(VOID) 用v開頭 vVariant
unsigned short(WORD) 用w開頭 wCount
unsigned long(DWORD) 用dw開頭 dwBroad
HANDLE(HINSTANCE) 用h開頭 hHandle
DWORD 用dw開頭 dwWord
LPCSTR(LPCTSTR) 用str開頭 strString
用0結尾的字符串 用sz開頭 szFileName
對未給出的變量類型要求提出並給出命名建議給技術委員會。
②、指針變量命名的基本原則為:
對一重指針變量的基本原則為:
“p”+變量類型前綴+命名
如一個float*型應該表示為pfStat
對多重指針變量的基本規則為:
二重指針: “pp”+變量類型前綴+命名
三重指針: “ppp”+變量類型前綴+命名
......
③、全局變量用g_開頭,如一個全局的長型變量定義為g_lFailCount,即:變量名=g_+變量類型+變量的英文意思(或縮寫)
④、靜態變量用s_開頭,如一個靜態的指針變量定義為s_plPerv_Inst,即: 變量名=s_+變量類型+變量的英文意思(或縮寫)
⑤、成員變量用m_開頭,如一個長型成員變量定義為m_lCount;即:變量名=m_+變量類型+變量的英文意思(或縮寫)
⑥、對枚舉類型(enum)中的變量,要求用枚舉變量或其縮寫做前綴。並且要求用大寫。
如:enum cmEMDAYS
{
EMDAYS_MONDAY;
EMDAYS_TUESDAY;
……
};
⑦、對struct、union、class變量的命名要求定義的類型用大寫。並要加上前綴,其內部變量的命名規則與變量命名規則一致。
結構一般用S開頭
如:struct ScmNPoint
{
int nX;//點的X位置
int nY; //點的Y位置
};
聯合體一般用U開頭
如: union UcmLPoint
{
long lX;
long lY;
}
類一般用C開頭
如:
class CcmFPoint
{
public:
float fPoint;
};
對一般的結構應該定義為類模板,為以後的擴展性考慮
如:
template <class TYPE>
class CcmTVector3d
{
public:
TYPE x,y,z;
};
⑧、對常量(包括錯誤的編碼)命名,要求常量名用大寫,常量名用英文表達其意思。
如:#define CM_FILE_NOT_FOUND CMMAKEHR(0X20B) 其中CM表示類別。
⑨、對const 的變量要求在變量的命名規則前加入c_,即:c_+變量命名規則;例如:
const char* c_szFileName;
2、函數的命名規范:
函數的命名應該盡量用英文表達出函數完成的功能。遵循動賓結構的命名法則,函數名中動詞在前,並在命名前加入函數的前綴,函數名的長度不得少於8個字母。
例如:
long cmGetDeviceCount(……);
3、函數參數規范:
①、參數名稱的命名參照變量命名規范。
②、為了提高程序的運行效率,減少參數占用的堆棧,傳遞大結構的參數,一律采用指針或引用方式傳遞。
③、為了便於其他程序員識別某個指針參數是入口參數還是出口參數,同時便於編譯器檢查錯誤,應該在入口參數前加入const標志。如:
……cmCopyString(const char * c_szSource, char * szDest)
4、引出函數規范:
對於從動態庫引出作為二次開發函數公開的函數,為了能與其他函數以及Windows的函數區分,采用類別前綴+基本命名規則的方法命名。例如:在對動態庫中引出的一個圖象編輯的函數定義為 imgFunctionname(其中img為image縮寫)。
現給出三種庫的命名前綴:
①、對通用函數庫,采用cm為前綴。
②、對三維函數庫,采用vr為前綴。
③、對圖象函數庫,采用img為前綴。
對宏定義,結果代碼用同樣的前綴。
5、文件名(包括動態庫、組件、控件、工程文件等)的命名規范:
文件名的命名要求表達出文件的內容,要求文件名的長度不得少於5個字母,嚴禁使用象file1,myfile之類的文件名。