變數命名的通用規則
2.第一個字母不能是數字,例如2Lerver這不是一個合法的C++變數。
3.不能是c++關鍵字,例如不能用class這個單詞來命名一個變數。
4.區分大小寫,例如iA和ia是兩個不同的變數。
理論上,在遵守了上面幾條規則的前提下,所宣告的變數名稱都是合法的。比如下面的命名:
char xueshengming[20]; //學生名
char a; //命名一個字元,但變數名毫無意義
這樣的變數命名儘管是合法的,但可讀性非常差。正規的軟體公司,對於變數命名往往都有自己的一個推薦規範。不同公司的規範又會有一些差別。當一個程式設計師從一個公司跳槽到另一個公司,甚至會出現不習慣新公司程式碼規範的現象。
萬事萬物,要是有一個統一的規範,也許程式設計師這個行業會少一些煩惱。俗話說得好:沒有規矩,不成方圓。以下是筆者多年編碼得出的變數命名的心得體會,在此總結如下,並奢望有招一日能成為行業規範。
變數命名的宗旨:
一、用最短的字元表示最多的意義。
int iPosX; //Pos表示位置,X表示橫座標 //個人比較喜歡用n做字首
二、使用變數字首
在變數前帶上小寫字首可以很直觀的看出變數的資料型別,而不必到變數的定義處去檢視。常用的資料型別推薦變數字首:
1.整型的字首
short sValue; //s為short的字首 int iAge; //i為int的字首
unsigned int uiAge; //ui為unsigned int的字首(兩個單詞的首字母) //也有用u做字首的
long lValue; //l為long的字首 2.浮點型的字首
float fScore; //f為float的字首
1.變數名只能是字母(A-Z,a-z)、數字(0-9)或下劃線。
2.第一個字母不能是數字,例如2Lerver這不是一個合法的C++變數。
3.不能是c++關鍵字,例如不能用class這個單詞來命名一個變數。
4.區分大小寫,例如iA和ia是兩個不同的變數。
理論上,在遵守了上面幾條規則的前提下,所宣告的變數名稱都是合法的。比如下面的命名:
char xueshengming[20]; //學生名
char a; //命名一個字元,但變數名毫無意義
這樣的變數命名儘管是合法的,但可讀性非常差。正規的軟體公司,對於變數命名往往都有自己的一個推薦規範。不同公司的規範又會有一些差別。當一個程式設計師從一個公司跳槽到另一個公司,甚至會出現不習慣新公司程式碼規範的現象。
萬事萬物,要是有一個統一的規範,也許程式設計師這個行業會少一些煩惱。俗話說得好:沒有規矩,不成方圓。以下是筆者多年編碼得出的變數命名的心得體會,在此總結如下,並奢望有招一日能成為行業規範。
變數命名的宗旨:
一、用最短的字元表示最多的意義。
int iPosX; //Pos表示位置,X表示橫座標 //個人比較喜歡用n做字首 二、使用變數字首
在變數前帶上小寫字首可以很直觀的看出變數的資料型別,而不必到變數的定義處去檢視。常用的資料型別推薦變數字首:
1.整型的字首
short sValue; //s為short的字首 int iAge; //i為int的字首
unsigned int uiAge; //ui為unsigned int的字首(兩個單詞的首字母) //也有用u做字首的
long lValue; //l為long的字首
2.浮點型的字首
float fScore; //f為float的字首
double dValue; //d為double的字首
3.字元型的字首
char cChar; //c為char的字首 //個人喜歡用a做字首
TCHAR tcChar //多位元組字元和Unicode字元相容型別的字首tc wchar_t wcChar //寬字元字首wc
4.字串的字首
char szName[30]; //sz為C語言字串的字首 string strName; //str為C++字串變數的字首 CString strInfo; //str為MFC字串變數的字首
5.布林型的字首
bool bPass; //b為bool的字首
6.指標型的字首
int *pValue; //p為指標的字首
說明:由於指標是指向一定資料型別的變數,因此p後面要不要再加一個字首一直讓我舉棋不定。如果再加上字首比如: int * piKey;
char * pszInfo;
這樣似乎意義更完整,但勢必會增加變數的字元長度。因此,這裡就不硬性規定了。但是,指標變數以p開頭應該是雷也打不動的。
7.陣列的字首 int arrNum[10]; //arr為陣列的字首
說明:和指標變數一樣,arr後是否再加陣列元素的資料型別字首取決於你自己。 string arrstrName[3]; //C++字串陣列,加上去似乎很彆扭
8.列舉變數的字首
enum emWeek; //em為列舉變數的字首
9.結構變數的字首:t
T_NODE tNode; //結構名稱以T_開頭 10.位元組變數的字首:by BYTE byInfo;
10.位元組變數的字首:by BYTE byInfo;
11.字變數的字首
DWORD dwInfo; //雙字 WORD wInfo; //單字
12.字元指標的字首
LPCTSTR ptszInfo; //ptsz表示字首,t表示TCHAR型別 LPCSTR pszInfo; LPSTR pszInfo;
13.STL容器型別字首 vector<int> vecValue;
說明:vec表示vector容器的字首,為了簡化變數,變數體後面不再使用字首 list<double> lstInfo;
14.MFC繫結控制元件變數的字首
CEdit m_ctlName; //物件變數,變數體前統一用ctl表示 //個人喜歡用m_ctrl
int m_iAge; //值變數,變數體有表示值資料型別的字首
說明:由於長短指標在32位作業系統後已無區別,所以不再區分,一律以p開頭,這也與指標變數以p開頭的原則貼得更近。
15.矩形結構的字首:rc RECT rcClient; CRect rcWin;
16.控制代碼物件一律以h開頭 HWND hWndName; HBRUSH hBr; HPEN hPen; HBITMAP hBmpBack;
17.windows顏色型別的字首:cr COLORREF crFront;
18.windows中DC(裝置上下文)型別的字首 CClientDC dcClient;
三、類的成員變數以m_開頭,後面為變數體,變數體依然要有字首。
int m_iDepth;
四、定義一個變數,為了簡化,在不影響變數意義的情況下,可以僅僅使用字首。 RECT rc;
五、全域性變數一律以g_開頭,後面為變數體,變數體依然要有字首。 int g_iNums;
六、定義結構體為了保證和C語言和C++的寫法相容性,一律採用typedef語句。 typedef struct tagINFO_NODE {
int iData;
tagINFO_NODE *pNext; }T_INFO_NODE, *PT_INFO_NODE;
七、變數體如果是多個單詞,每個單詞的首字母大寫。 int iStudentAge;
八、在意義明確的情況下可以僅僅使用首字母命名變數可以縮短變數名。 int iID;
說明:僅使用首字母表示變數體的前提是保證變數的意義,比如變數iStudentAge如果宣告成:
int iSA; //這樣將失去意義,不可取
九、定義一個類使用C作為類名的字首。 class CStudent { … };