天天看點

變量命名的通用規則

 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的字首 

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 {     … }; 

引用:https://blog.csdn.net/u012314708/article/details/52130961