变量命名总结

Posted kaolagirl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量命名总结相关的知识,希望对你有一定的参考价值。

我在编程的时候发现自己对变量的命名比较混乱,有时候命名无厘头也没有统一的规则,根本没有辨识性。故今天来对变量命名的技巧和原则做个总结,一是分享同大家学习,二也是勉励自己,编程路漫漫,定不是一朝促成,需要长久坚持与学习!

一. 命名法则

目前,业界共有四种命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法,其中前三种是较为流行的命名法。

1. 驼峰命名法

命名法则:是指第一个单词小写·,从第二个单词开始每个单词首字母大写。
下面是驼峰命名法来命名的变量和函数的,如下:

studengName // 表示存放学生姓名的变量
deleteStudentName( ) // 表示删除学生姓名的函数

2. 匈牙利命名法

命名法则:属性_类型+对象描述,类型+对象描述
名字是以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词是对对象的描述,要指明变量的用途。
下面是用匈牙利命名法命名的变量,如:

g_cch : g_是属性描述,表示全局变量;c和ch分别是计数类型和字符类型,一起表示变量类型;这里忽略了对象描述。所以它表示一个对字符进行计数的全局变量
iCount :i 是整型 ,表示整型变量
szFileName: 用0结尾的字符串

  1. 属性部分:
g_全局变量
c_常量
m_c++类 成员变量
s_静态变量
  1. 类型部分
a数组 array
b布尔 boolean
i (通常用n )整型 int
sz字符串 string zero
l长整型 long int
ch(通常用c )字符 char
by字节 byte
d双精度浮点 double
p指针 point
fn函数 function
c(通常用cnt )计数
  1. 描述部分
Max最大
Min最小
Init初始化
T/Temp临时变量
Src源对象
Dest目的对象

3. 帕斯卡命名法

命名法则:每个单词的首字母大写

DisplayInfo();
Student :定义一个存放学生信息的类

4. 下划线命名法

命名规则:函数名中的每一个逻辑断点都有一个下划线来标记。

print_employee_paychecks();

二. 命名的基本原则

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

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

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

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

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

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

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

8. 用正确的反义词组命名具有互斥意义的变量或函数等。

add / removebegin / end
create / destroyinsert / delete
first / lastget / release
increment / decrementput / get
add / deletelock / unlock
open / closemin / max
old / newstart / stop
next / previoussource / target
show / hidesend / receive
source / destinationcut / paste
up / down

示例如下:

int min_sum;
int max_sum;
add_user( );
delete_user( );

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

三. 变量名的命名规范

变量通常是使用匈牙利命名法则,也就是 变量名 = 变量类型(前缀)+ 英文单词(对象描述)

boolean 用b开头 bShow
int 用i开头 iCount
short int 用n开头 nStepCount
long int 用l开头 lSum
char 用c开头 cCount
unsigned char 用by开头
float 用f开头 fAvg
double 用d开头 dDeta
unsigned int(WORD) 用w开头 wCount
unsigned long int(DWORD) 用dw开头 dwBroad
字符串 用s开头 sFileName
用0结尾的字符串 用sz开头 szFileName

全局变量 = g_ + 变量类型(前缀)+ 英文单词(对象描述),如下:

g_iCount

静态变量 = s_ + 变量类型(前缀)+ 英文单词(对象描述),如下:

s_iCount

常量命名全部用大写,单词间用下划线隔开,如下:

MAX_STOCK_COUNT

const 常量 = c_+变量类型(前缀)+ 英文单词(对象描述);

c_sFileName

四.函数的命名规范

1.函数的命名应该尽量用英文(或英文缩写、中文全拼、中文全拼缩写)表达出函数完成的功能
遵循动宾结构的命名法则,即函数名 = 动词+名词;函数名中动词在前,并在命名前加入函数的前缀,函数名的长度不得少于8个字母。函数名首字大写,若包含有两个单词的每个单词首字母大写。如果是OOP 方法,可以只有动词(名词是对象本身)。示例:

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

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

五.文件名的命名规范

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

以上是关于变量命名总结的主要内容,如果未能解决你的问题,请参考以下文章

代码规范

我的Java编码规范

总结整理前端‘变量名’‘类名’‘函数名’的命名规则

c/c++ -->自我编程风格总结

阿里巴巴Java开发手册上常规的编程命名总结

代码规范