程序编码的命名方式

这边主要写一下在写代码的时候,变量该如何规范的去命名,规范命名毋庸置疑对于代码的质量提高不是一点两点,团队项目中也更有利于队友理解。

目前主要有4中命名方式:

 

1.驼峰式命名法

骆峰式命名法(Camel-Case)分为2种,小驼峰法和大驼峰法。

(1)小驼峰法:变量名的第一个单词的首字母小写,其余单词的首字母大写

变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如int studentCount=0;

变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。

(2)大驼峰法:变量名的第一个单词的首字母大写,其余单词的首字母大写

相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。常用于类名,函数名,属性,命名空间。譬如public class StudentInfomation;

补充说明,在JAVA中:类名的标识符一般用大驼峰式书写格式,方法和变量的标识符则多用小驼峰式书写格式。

 

2. 帕斯卡命名法 
帕斯卡命名法其实就是目前说的大驼峰命名法,常用于类名,函数名,属性,命名空间。

 

3.下划线法:函数名中的每一个逻辑断点都有一个下划线来标记。

相比驼峰法使用大小写来标记间断点, 下划线法是用空格来标记每一个逻辑断点,注意的是英文单词都是小写字母没有大写字母。

譬如string  my_name;

 

4.匈牙利命名法:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。相对之前三种方式复杂很多,但是在项目工程中,这种命名方式很方便,很好用。

这里说一下前缀的知识点:

前缀类型中文说明
aArray数组
bBOOL(int)布尔(整数)
byUnsigned Char(Byte)无符号字符(字节)
cChar字符(字节)
cbCount of Bytes字节数
crColor Reference Value颜色(参考)值
cxCount of x(Short)x的集合(短整数)
fFlags(usually multiple bit values)标志(一般是有多位的数值)
fnFunction函数
g_Global全局的
hHandle句柄
iInteger整数
lLong长整数
lpLong Pointer长指针
m_Data Member of a Class一个类的数据成员
nShort Integer短整数
pPointer指针
sString字符串
szZero Terminated String以零结尾的字符串
tmText Metric文本规则
uUnsigned Integer无符号整数
ulUnsigned Long(ULONG)无符号长整数
wWORD(Unsigned Short)无符号短整数
x,yx, y Coordinates (Short)坐标值(短整数)
vVoid

有关项目的全局变量用g_开始,类成员变量用m_,局部变量若函数较大则可考虑用l_用以显示说明其是局部变量。

前缀类型例子
g_全局变量g_Servers
C类或者结构体CDocument, CPrintInfo
m_成员变量m_pDoc, m_nCustomers

 

例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。 

 

***补充一下:

1.命名的基本原则

(1)命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解——尽量采用采用英文单词或全部中文全拼表示,若出现英文单词和中文混合定义时,使用连字符“_”将英文与中文割开。较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。例如:temp->tmp、->标志、statistic->stat、increment->inc、message->msg等缩写能够被大家基本认可。

(2)命名中若使用特殊约定或缩写,则要有注释说明。应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。

(3)自己特有的命名风格,要自始至终保持一致,不可来回变化。个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。

(4)对于变量命名,禁止取单个字符(如i 、j 、k... ),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i 、j 、k 作局部循环变量是允许的。变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。

(5)除非必要,不要用数字或较奇怪的字符来定义标识符。

(6)命名规范必须与所使用的系统风格保持一致,并在同一项目中统一。

(7)在同一软件产品内,应规划好接口部分(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。对接口部分的标识符应该有更严格限制,防止冲突。如可规定接口部分的变量与常量之前加上“模块”标识等。

(8)用正确的反义词组命名具有互斥意义的变量或相**作的等。

(9)除了编译开关/ 头文件等特殊应用,应避免使用_EXAMPLE_TEST_ 之类以下划线开始和结尾的定义。

 

2.变量名的命名规则

(1)变量的命名规则要求用“匈牙利法则”。

即开头字母用变量的类型,其余部分用变量的英文意思、英文的缩写、中文全拼或中文全拼的缩写,要求单词的第一个字母应大写。

即: 变量名=变量类型+变量的英文意思(或英文缩写、中文全拼、中文全拼缩写)

对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在的开始处。

(2)指针变量的基本原则为:对一重指针变量的基本原则为:“p”+变量类型前缀+命名,如一个float*型应该表示为pfStat。对二重指针变量的基本规则为:“pp”+变量类型前缀+命名。对三重指针变量的基本规则为:“ppp”+变量类型前缀+命名。

(3)全局变量用g_开头,如一个全局的长型变量定义为g_lFailCount。即:变量名=g_+变量类型+变量的英文意思(或缩写)。此规则还可避免局部变量和全局变量同名而引起的问题。

(4)静态变量用s_开头,如一个静态的指针变量定义为s_plPerv_Inst。即: 变量名=s_+变量类型+变量的英文意思(或缩写)

(5)对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。并且要求用大写。如:

enum cmEMDAYS
{
EMDAYS_MONDAY;
EMDAYS_TUESDAY;
……
};

(6)对struct、union变量的要求定义的类型用大写。并要加上前缀,其内部变量的命名规则与变量命名规则一致。

结构一般用S开头,如:

struct ScmNPoint
{
int nX;//点的X位置
int nY; //点的Y位置
};

联合体一般用U开头,如:

union UcmLPoint
{
LONG lX;
LONG lY;
}

(7)对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其意思。当需要由多个单词表示时,单词与单词之间必须采用连字符“_”连接。

如:#define CM_FILE_NOT_FOUND CMMAKEHR(0X20B) 其中CM表示类别。

(8)对const 的变量要求在变量的命名规则前加入c_。即:c_+变量命名规则;示例:const char* c_szFileName;

 

3.函数的命名规范

(1)函数的命名应该尽量用英文(或英文缩写、中文全拼、中文全拼缩写)表达出完成的功能——函数名应准确描述函数的功能。遵循动宾结构的命名法则,函数名中动词在前,并在命名前加入函数的前缀,函数名的长度不得少于8个字母。函数名首字大写,若包含有两个单词的每个单词首字母大写。如果是OOP 方法

可以只有动词(名词是对象本身)。示例:

LONG GetDeviceCount(……);
void print_record( unsigned int rec_ind ) ;
intinput_record( void ) ;
unsigned char get_current_color( void ) ;

(2)避免使用无意义或含义不清的动词为函数命名。如使用process、handle等为函数命名,因为这些动词并没有说明要具体做什么。

(3)必须使用函数原型声明。函数原型声明包括:引用外来函数及内部函数,外部引用必须在右侧注明函数来源: 模块名及文件名;内部函数,只要注释其定义文件名——和调用者在同一文件中(简单程序)时不需要注释。

应确保每个函数声明中的参数的名称、类型和定义中的名称、类型一致。

 

4.函数参数命名规范

(1)参数名称的命名参照变量命名规范。

(2)为了提高程序的运行效率,减少参数占用的堆栈,传递大结构的参数,一律采用指针或引用方式传递。

(3)为了便于其他识别某个指针参数是入口参数还是出口参数,同时便于编译器检查错误,应该在入口参数前加入const标志。

如:……cmCopyString(const CHAR * c_szSource, CHAR * szDest)

文件名(包括动态库、组件、控件、工程文件等)的规范文件名的命名要求表达出文件的内容,要求文件名的长度不得少于5个字母,严禁使用象file1,myfile之类的文件名。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值