分享

C++程序变量命名推荐规范

 青松卓然 2012-10-10
C++程序变量命名推荐规范

出处:威士培训     日期:2009-8-30 0:27:20     被阅读:0 次      [关 闭]

变量的规范命名是为了增强代码的可读性和容易维护性。C++程序变量命名只有几条必须遵守的“死规则”,这些规则如下:

        1.变量名只能是字母(A-Z,a-z)、数字(0-9)或下画线。

  2.第一个字母不能是数字,例如2Lerver这不是一个合法的C++变量。

  3.不能是c++关键字,例如不能用class这个单词来命名一个变量。

  4.区分大小写,例如iAia是两个不同的变量。

理论上,在遵守了上面几条规则的前提下,所声明的变量名称都是合法的。比如下面的命名:

char  xueshengming[20];     // 学生名

char  a;                   // 命名一个整数,但变量名毫无意义

这样的变量命名尽管是合法的,但可读性非常差。正规的软件公司,对于变量命名往往都有自己的一个推荐规范。不同公司的规范又会有一些差别。当一个程序员从一个公司跳槽到另一个公司,甚至会出现不习惯新公司代码规范的现象。

 万事万物,要是有一个统一的规范,也许程序员这个行业会少一些烦恼。俗话说得好:没有规矩,不成方圆。以下是笔者多年编码得出的变量命名的心得体会,在此总结如下,并奢望有招一日能成为行业规范。

1.变量命名的宗旨:用最短的字符表示最多的意义。

int iPosX;     // Pos表示位置,X表示横坐标

2.使用变量前缀

在变量前带上小写前缀可以很直观的看出变量的数据类型,而不必到变量的定义处去查看。常用的数据类型推荐变量前缀:

l        整型的前缀

short sValue;   // sshort的前缀

int iAge;       // iint的前缀

unsigned int uiAge;   // uiunsigned int的前缀(两个单词的首字母)

long lValue;     // ilong的前缀

l        浮点型的前缀

         float fScore;     // ffloat的前缀

         double dValue;       // ddouble的前缀

l        字符型的前缀

         char cChar;         // cchar的前缀

TCHAR tcChar      // 多字节字符和Unicode字符兼容类型的前缀tc

wchar_t  wcChar    // 宽字符前缀wc

l        字符串的前缀

char szName[30];    // szC语言字符串的前缀

string strName;      // strC++字符串变量的前缀

CString strInfo;     // strMFC字符串变量的前缀

l        布尔型的前缀

         bool bPass;         // bbool的前缀

l        指针型的前缀

         int * pValue;       //p为指针的前缀

说明:由于指针是指向一定数据类型的变量,因此p后面要不要再加一个前缀一直让我举棋不定。如果再加上前缀比如:
    int * piKey; 

char * pszInfo;

这样似乎意义更完整,但势必会增加变量的字符长度。因此,这里就不硬性规定了。但是,指正变量以p开头应该是雷也打不动的。

l        数组的前缀

         int arrNum[10];  // arr为数组的前缀

         说明:和指针变量一样,arr后是否再加数组元素的数据类型前缀取决于你自己。

string arrstrName[3];         //C++字符串数组,加上去似乎很别扭

l        枚举变量的前缀

         enum  emWeek;   // em为枚举变量的前缀

l        结构变量的前缀:t

T_NODE  tNode;  // 结构名称以T_开头

l        字节变量的前缀:by

BYTE  byInfo;

l        字变量的前缀

DWORD  dwInfo;   // 双字

WORD    wInfo;   // 单字

l        字符指针的前缀

LPCTSTR  ptszInfo;  // ptsz表示前缀,t表示TCHAR类型

LPCSTR  pszInfo;

LPSTR  pszInfo;

l        STL容器类型前缀

vector<int>  vecValue;  

说明:vec表示vector容器的前缀,为了简化变量,变量体后面不再使用前缀

list<double>  lstInfo;

l        MFC绑定控件变量的前缀

CEdit  m_ctlName;  // 对象变量,变量体前统一用ctl表示

int    m_iAge;   // 值变量,变量体有表示值数据类型的前缀

说明:由于长短指针在32位操作系统后已无区别,所以不再区分,一律以p开头,这也与指针变量以p开头的原则贴得更近。

l        矩形结构的前缀:rc

RECT  rcClient;  

CRect  rcWin;

l        句柄对象一律以h开头

HWND hWndName;

HBRUSH  hBr;

HPEN  hPen;

HBITMAP  hBmpBack;

l        windows颜色类型的前缀:cr

COLORREF crFront;  

l        windowsDC(设备上下文)类型的前缀

CClientDC  dcClient;

3. 类的成员变量以m_开头,后面为变量体,变量体依然要有前缀。

int  m_iDepth;

4. 定义一个变量,为了简化,在不影响变量意义的情况下,可以仅仅使用前缀。

RECT  rc;

5. 全局变量一律以g_开头,后面为变量体,变量体依然要有前缀。

int  g_iNums;

6. 定义结构体为了保证和C语言和C++的写法兼容性,一律采用typedef语句。

typedef   struct  tagINFO_NODE

{

int  iData;

tagINFO_NODE , ;, ; * p, Next;

}T_INFO_NODE, *PT_INFO_NODE;

7. 变量体如果是多个单词,每个单词的首字母大写。

int iStudentAge;

8. 在意义明确的情况下可以仅仅使用首字母命名变量可以缩短变量名。

int iID;

说明:仅使用首字母表示变量体的前提是保证变量的意义,比如变量iStudentAge如果声明成:

int  iSA;  // 这样将失去意义,不可取

9. 定义一个类使用C作为类名的前缀。

class CStudent

{

    …

}

 

[版权声明]

本文档为威士培训撰写,拥有版权。其他任何网站如果无威士培训书面许可,不得以任何形式装载,违者将追究法律责任。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多