`
jgsj
  • 浏览: 973872 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

转自:http://blog.sina.com.cn/s/blog_59e87cd40100g0mb.html

变量的规范命名是为了增强代码的可读性和容易维护性。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;</, o:p ,>

}T_INFO_NODE, *PT_INFO_NODE;

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

int iStudentAge;

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

int iID;

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

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

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

class CStudent

{

}

分享到:
评论

相关推荐

    C++命名规范.pdf

    C++命名规范是指在编写C++程序时,对各种命名(包括变量、函数、文件、工程等)所遵循的规定和惯例。这些规范的遵守可以提高代码的可读性、可维护性和可重用性。 一、工程名命名规范 * 工程名不强制统一,但建议...

    现代C++程序设计

    《现代C++程序设计(原书第2版)》图文并茂,通俗易懂,真正做到寓教于乐,是一本难得的C++面向对象设计入门教材。 出版者的话 译者序 前言 第1章 C++概述与软件开发 1.1 什么是C语言和C++ 1.1.1 C和C++历史回顾 1.1.2...

    C++程序书写规范标准.doc

    C++程序书写规范标准 C++程序书写规范标准是软件开发中不可或缺的一部分,好的编码风格可以提高代码的可读性、可维护性和可靠性。本文档旨在总结和统一C++程序书写规范,以便提高编程效率和代码质量。 一、前言 ...

    C++编码规范

    1.3. 类库(或程序库)命名 (适用于C/C++) 5 1.4. 方法和函数的命名(适用于C++) 5 1.5. 类属性的命名(适用于C++) 5 1.6. 方法和函数参数的命名(适用于C++) 6 1.7. 局部变量的命名(适用于C/C++) 6 1.8...

    网龙C++编程规范

    C++编程规范是指在编写C++程序时遵守的一系列规则和惯例,以确保代码的可读性、可维护性和可扩展性。本文将对网龙C++编程规范进行总结和解释。 文件结构 文件结构是指源文件的组织方式。在网龙C++编程规范中,文件...

    C++编程规范.pdf

    本规范涵盖了编程的各个方面,包括排版、注释、标识符命名、变量使用、代码可测性、程序效率、质量保证、代码编译、单元测试、程序版本与维护等。 排版 在编程时,排版是非常重要的。好的排版可以提高代码的可读性...

    javascript 命名规则 变量命名规则

    提示: 匈牙利命名法是一位微软程序员发明的,多数的C,C++程序都使用此命名法。 JavaScript变量匈牙利命名类型 JavaScript变量起名类型 变量命名前缀 Array 数组 a Float 浮点 l Function 函数 f Integer...

    审查代码规范(C++)

    审查代码规范 C++ 1. 范围 3 2. 规范性引用文件 3 3. 术语和定义 3 4. 开发工具 3 5. 目录结构 4 6. 布局规范 5 6.1. 对齐 5 6.2. 代码行内的空格 7 6.3. 空行 8 6.4. 代码行 9 6.5. 长行拆分 10 6.6. 注释 11 ...

    【全新正版】现代C++程序设计(原书第2版)

    1.2.1 C++程序并不一定是面向对象的 1.2.2 一个简单的面向对象程序示例 1.2.3 面向对象的软件更有优势 1.3 结构化设计与面向对象设计 1.3.1 ATM——结构化设计 1.3.2 采用面向对象方法的ATM——究竟是谁的任务 1.3.3...

    C++开发技术标准20201102.docx

    * 变量命名:使用小写字母和下划线来命名变量,例如`user_name`。 * 函数命名:使用驼峰命名法来命名函数,例如`getUserInfo`。 * 类命名:使用驼峰命名法来命名类,例如`UserInfo`。 * 文件命名:使用小写字母和...

    McGraw C++程序调试实用手册

    1.9.3 变量命名规范 1.9.4 应用程序符号命名规范 1.9.5 Microsoft MFC宏命名规范 1.9.6 库标识符命名规范 1.9.7 静态库版本命名规范 1.9.8 动态连接库命名规范 1.9.9 windows.h命名规范 1.10 操作符...

    C&C++软件编程规范

    为了提高源程序的质量和可维护性,最终提高公司软件产品生产力,我们有必要对...本规范总则的内容包括:排版、注释、标识符命名、变量使用、代码可测性、程序效率、质量保证、代码编译、单元测试、程序版本与维护等。

    华为C++编码规范

    华为代码规范,适用 C/C++ 1 概述 ................................................................................................................................................................... 5 ...

    C++编程规范.rar

    本规范总则的内容包括:排版、注释、标识符命名、变量使用、代码可测性、程序效率、质量保证、代码编译、单元测试、程序版本与维护等。 本规范总则的示例都以C语言为背景,采用以下的术语描述: ★ 规则:编程时...

    Panorama系统程序开发规范之二

    匈牙利规范的阐述以及在C环境的应用,主要关于变量的命名规范的说明

    纯C++编程规范和范例

    对规范编程有非常大的帮助。 1 排版 6 2 注释 11 3 标识符命名 18 4 可读性 20 5 变量、结构 22 6 函数、过程 28 7 可测性 36 8 程序效率 40 9 质量保证 44 10 代码编辑、编译、审查 50 11 代码测试、维护 52 12 宏

    C++编程规范

    本规范总则的内容包括:排版、注释、标识符命名、变量使用、代码可测性、程序效率、质量保证、代码编译、单元测试、程序版本与维护等。 本规范总则的示例都以C语言为背景,采用以下的术语描述: ★ 规则:编程时...

    华为公司编程规范和范例(C++).pdf

    1 排版 2 注释 3 标识符命名 4 可读性 5 变量、结构 6 函数、过程 7 可测性 8 程序效率 9 质量保证 10 代码编辑、编译、审查 11 代码测试、维护 12 宏

    小学生四则运算练习系统(C++实现)

    注意代码缩进,变量命名规范、见名知意; 4. 可读性好。代码块间有空行隔开,每个函数有注释说明其功能、参数和返回 值等,代码关键部分也应适当注释。 我写的这个小学生四则运算系统代码可读性非常好,思维清晰...

Global site tag (gtag.js) - Google Analytics