-
C++代码规范之定名
添加时间:2013-7-12 点击量:C++代码规范之定名
一、定名的两个基起原根蒂根基则
1、含义清楚,不易混合;
2、不和其它模块、体系API的定名空间相冲突。
二、定名公例
1、在所有定名中,都应应用标准的英文单词或缩写;不得应用拼音或拼音缩写,除非该名字描述的是文
特有的内容(如半角、全角、声母、韵母等);除非须要,不要用数字或较新鲜的字符来定义标识符。
2、所有定名都应遵守达意原则,即名称应含义清楚、明白。
3、所有定名都不易过长,应把握在规定的最大长度以内。
4、所有定名都应尽量应用全称。
5、定名中若应用特别商定或缩写,则要有注释申明。
6、本身特有的定名风格,要自始至终对峙一致,不成往返变更。
申明:小我的定名风格,在合适地点项目组或产品组的定名规矩的前提下,才可应用。(即定名规矩中没有规定到的处所才可有小我定名风格)。
7、在同一软件产品内,应规划好接口项目组标识符(变量、布局、函数及常量)的定名,防止编译、链接时产生冲突。
8、对于变量定名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能注解其变量类型、数据类型等,但i、j、k作局部轮回变量是容许的。
申明:变量,尤其是局部变量,若是用单个字符默示,很轻易敲错(如i写成j),而编译时又搜检不出来,有可能为了这个小小的错误而花费多量的查错时候。
例:下面所示的局部变量名的定义办法可以鉴戒。
int liv_Width
其变量名申明如下:
l 局部变量(Local) (其它:g 全局变量(Global)...)
i 数据类型(Interger)
v 变量(Variable) (其它:c 常量(Const)...)
Width 变量含义
如许可以防止局部变量与全局变量重名。
9、定名规范必须与所应用的体系风格对峙一致,并在同一项目中同一,比如采取UNIX的全小写加下划线的风格或大小写混排的体式格式,不要应用大小写与下划线混排的 体式格式,用作特别标识如标识成员变量或全局变量的m_和g_,厥后加上大小写混排的体式格式是容许的。
例: Add_User不容许,add_user、AddUser、m_AddUser容许。
10、用正确的反义词组定名具有互斥意义的变量或相作的函数等。
申明:下面是一些在软件中常用的反义词组。
add / remove begin / end create / destroy /
first / last get / release increment / decrement put / get
add / lock / unlock open / close min / max
old / new start / stop next / previous source / target
show / hide send / receive up / down cut / paste
例:
int min_sum;
int max_sum;
int add_user( BYTE user_name );
int _user( BYTE user_name );
11、除了编译开关/头文件等特别应用,应避免应用_EXAMPLE_TEST_之类以下划线开端和结尾的定义。
12、法度中不要呈现标识符完全雷同的局部变量和全局变量,尽管两者的感化域不合而不会产生语法错误,但会使人误会。
三、具体规范
1、名
不强迫同一。
2、文件名:
基于名,开首3个字母应注解与哪一个相干。
后面的字母应可以或许差别不合的功能。
不区分大小写。
长度不限于8.3格局,建议不久不多于30个字符。
若文件用于定义和实现类,建议文件名与类名对峙一致。
3、函数名:
参照 Windows API 的定名规范。
推荐应用动宾布局。函数名应清楚反应函数的功能、用处。
函数名最长不得跨越30个字符。
函数名第一个字母必须大写。
全局函数必须以小写前缀g开首。全局函数的名字该当应用“动词”或者“动词+名词”(动宾词组)。类的成员函数该当只应用“动词”,被省略掉的名词就是对象 本身。
例:
DrawBox(); // 全局函数
box->Draw(); // 类的成员函数4、变量名:
原则上,变量名的定名遵从匈牙利记法。即:前缀 + 类型 + 变量名
变量名最长不得跨越20个字符。
变量的名字该当应用“名词”或者“形容词+名词”。
例:
float value;
float oldValue;1)格局:[m_|s_|g_] type [class name|struct name] variable name
2)申明:
m_ : 类的成员变量
ms_:类的静态成员变量
s_ :静态全局变量
g_ :通俗全局变量
类型缩写(type)
char, TCHAR: ch
char[],TCHAR[]: sz
bool, BOOL: b
int, __int16,__int32,__int64: n
long: l
double: d
float: ft
BYTE: by
WORD: w
DWORD: dw
unsigned: u
function: fn
p :pointer
lp :pointer
5、类名:
必须以大写K开首,后面字母反应具体含义,以清楚表达类的用处和功能为原则。
接口必须以大写I开首,代表 Interface 。
当名称由多个单词构成时,每一个单词的第一个字母必须大写。
6、布局名、宏名、列举名、结合名:
全部大写。
列举名加小写前缀enum。
例:
typedef enum _KFILE_OPEN_MODE
{
enumOPEN_READONLY = 0;
enumOPEN_READWRITE = 1;
enumCREATE_ALWAY = 3 ;
} KFILE_OPEN_MODE;
宏名加小写前缀def。
例:
#define defMAXNUMBER 100
布局名加小写前缀tag,之后必须以大写K开首。
例:
typedef struct tagKPOINT
{
int x;
int y;
} KPOINT;
结合名加小写前缀uni。
例:
typedef union _VARIANT
{
char unichVal;
int uninVal;
long unilVal;
float uniftVal;
} VARIANT;
申明:对接口项目组的标识符应当有更严格限制,防止冲突。如可规定接口项目组的变量与常量之前加上 “模块”标识等。
申明:应当在源文件的开端之处,对文件中所应用的缩写或商定,希罕是特别的缩写,进行须要的注释申明。
申明:较短的单词可通畴昔掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写。
一些单词有大师公认的缩写。
例:temp 可缩写为 tmp
flag 可缩写为 flg
statistic 可缩写为 stat
increment 可缩写为 inc
message 可缩写为 msg
我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》