正确并形象地给函数、变量命名,不仅可以增加程序的可读性,也是程序员编程风格的一种反映。较好的命名习惯,可以有效的提高程序的可维护性。以下介绍几种常用的变量命名规则。

匈牙利命名法

广泛应用于Microsoft Windows这类环境中。

这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变 量),再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。

匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。

例如:bEnable, nLength, hWnd。

匈牙利命名法中常用的小写字母的前缀:

前缀   类型  描述
a   Array   数组
b   BOOL    布尔
by  BYTE    无符号字符
c   char    字符
cb  Count of bytes  字节数
cr  Color reference value   颜色值
cx,cy   Count of x,y(short) 长度
dw  DWORD   双字(无符号长整形)
f   Flags   标志
fn  Function    函数
g_  Global  全局的
h   HANDLE  句柄
i   Integer(int)    整数
l   Long(long)  长整数
lp  Long point  长指针
m_  Data member of a class  类的数据成员
n   Short(short)    短整型
np  Near point  短指针
p   Point   指针
s   String  字符串
sz  Zero terminated string  以0结尾的字符串
tm  Text metric 文本规则
u   Unsigned int    无符号整数
ul  Unsigned long(ULONG)    无符号长整数
w   WORD    无符号短整数
x,y x,y coordinates(short)  坐标
v   Void    空

有关项目的全局变量用g_开始,类成员变量用m_。

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

驼峰命名法

近年来越来越流行。

驼峰命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。其中第一个单词首字母小写,余下的单词首字母大写。

例如:

printEmployeePaychecks();

函数名中每一个逻辑断点都有一个大写字母来标记。

帕斯卡(Pascal)命名法

与驼峰命名法类似。

只不过驼峰命名法是第一个单词首字母小写,而帕斯卡命名法则是第一个单词首字母大写。因此这种命名法也有人称之为“大驼峰命名法”。

例如:
DisplayInfo();
UserName

都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和骆驼命名法居多。事实上,很多程序设计者在实际命名时会将驼峰命名法和帕斯卡结合使用,例如变量名采用驼峰命名法,而函数采用帕斯卡命名法。

下划线命名法

下划线法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。

函数的命名

函数名使用下划线分割小写字母的方式命名:设备名_操作名();

操作名一般采用:谓语(此时设备名作为宾语或者标明操作所属的模块)或者谓语+宾语/表语(此时设备名作为主语或者标明操作所属的模块) 等形式,如:
tic_init();
adc_is_busy();
uart_tx_char();

中断函数的命名直接使用 设备名_isr() 的形式命名,如:
timer2_isr();

变量的命名

变量的命名也采用下划线分割小写字母的方式命名。命名应当准确,不引起歧义,且长度适中。如:
int length;
uint32 test_offset;

单字符的名字也是常用的,如i, j, k等,它们通常可用作函数内的局部变量。tmp常用做临时变量名。
局部静态变量,应加s_词冠(表示static),如:
static int s_lastw;

全局变量(尤其是供外部访问的全局变量),应加g_词冠(表示global),如:
void (* g_capture_hook)(void);

常量及宏的命名

采用下划线分割大写字母的方式命名,一般应以设备名作为前缀,
防止模块间命名的重复。如:
#define TIMER0_MODE_RELOAD 2
#define TIMER2_COUNT_RETRIEVE(val) ((uint16)(65536 - (val)))

当然,看作接口的宏可以按照函数的命名方法命名,例如:
#define timer2_clear() (TF2 = 0)
#define timer0_is_expired() (TF0)

总结

据考察,没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命名规则。命名规则对软件产品而言并不是“成败悠关”的事,我们不要化太多精力试图发明世界上最好的命名规则,而应当制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施。

几种常见的程序命名规则相关推荐

  1. 几种常用的程序命名方法(规则)

    概述 在平时的开发工作中,为了提高开发效率,缩短开发周期,苦逼的程序员都会使用已有的第三方库或者同事书写的功能库.但是每个程序员都有自己书写代码的习惯,在阅读与自己书写不用的代码时,总是感觉到别扭,有 ...

  2. 程序员:这10种糟糕的程序命名,你遇到过几个?

    效率工具传送门 推荐20套实战源码 程序员你可以考虑安装的15款谷歌插件 99%的人不知道搜索引擎的6个技巧 12款好用的Visual Studio插件,最后一款良心推荐 有人问:规范的命名风格真的能 ...

  3. 公众号和小程序命名规则

    公众号和小程序命名不允许使用特殊符号,除了空格符号和小程序名称最后可以加"+"的符号,如果要使用其它特殊符号需要上传含有特殊符号的商标才可以使用. 命名小技巧: 如果名称过长,可以 ...

  4. Microsoft公司的匈牙利法命名规则

    Microsoft公司的"匈牙利"法命名规则 比较著名的命名规则当推Microsoft公司的"匈牙利"法,该命名规则的主要思想是"在变量和函数名中加入 ...

  5. C/C++代码规范(一)——文件结构、排版、命名规则

    代码规范是每个程序员倍加关注的问题.C语言编码与注释规范,懂不懂编码规范笔试时能一眼被看出来,有良好的编码习惯笔试时也会增色不少,知道你有过工作经验或者参与过大型项目.本文是在学习林锐博士的<高 ...

  6. 少儿编程150讲轻松学Scratch(六)-少儿编程命名规则

    前言 少儿编程命名也是很重要的哦,小朋友们代码里面的命名有没有做好呢?有的宝宝可能要会有疑问,老师老师,我给里面的东西怎么命名又不影响程序功能,为什么起个名字也要在意呢? 无论是代码前期搭建的工作,还 ...

  7. 【C/C++高质量代码】-----第二章 命名规则

    自由,心灵和肉体的自由,随心所欲而不逾矩.嗯·····咱这是二十岁就达到七十岁的思想境界啦~~ 文章目录 前言 1. 共性命名规则 2. Windows应用程序命名规则 总结 前言 你的变量和函数都是 ...

  8. 2 ABAP命名规则

    2 ABAP命名规则 程序命名规则:<Z><XX><nnn> <Z> :项目上的开发程序以Z开头 <XX> :程序属于的业务模块(例如:MM ...

  9. C++变量名 命名规则

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.                                               本 ...

  10. FreeRTOS内核笔记(一):基本知识和命名规则

    FreeRTOS内核笔记(一):基本知识和命名规则 FreeRTOS内核笔记 命名规则: 常用宏定义 Thread运行状态: RTOS Tick Context切换: 实时调度器Scheduler F ...

最新文章

  1. inline-block 间距
  2. (转) Core Animation 简介
  3. JPA注解实现one-to-one的主键关联映射
  4. spring入门到放弃——spring事务管理
  5. sql 查询所有数据库-表-表结构
  6. RAID (HP)双循环
  7. 【复试笔记】市政工程-给水排水管网系统
  8. 查看已激活Windows的密钥
  9. Python库详解。python有那些库你都知道了嘛?
  10. 华为电脑Linux进pe,华为 PE-TLOOM 开启USB调试模式
  11. 【03】图解原型和原型链by魔芋
  12. python充电时刻
  13. cf 1677A - Tokitsukaze and Strange Inequality
  14. NVIDIA GPU 计算能力
  15. 【原理篇】qBittorrent下载+转种Transmission快校版+IYUU Plus辅种教程
  16. 吴晓波眼中的2018年
  17. 原生JS简单的无缝自动轮播
  18. java批量修改指定目录下的文件名
  19. C语言文件缓冲区作用,C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲...
  20. 微信小程序-评论业务的实现

热门文章

  1. Java日常干货-观察者模式
  2. Eclipse 快捷键的使用
  3. zabbix监控memcached
  4. 震精 - PostgreSQL 递归查询 - 树型数据按路径分组输出
  5. 博客6:磁盘以及创建文件系统的相关知识点
  6. OpenStack单点部署及使用简单教程(附:部署好的VMware虚拟机)
  7. 《那些花儿》范玮琪版
  8. 1、分组选择器, 2、尺寸 (Dimension)属性,3、Display(显示) 与 Visibility(可见性),4、CSS Display - 块和内联元素,5、CSS Position(定位
  9. 1.啊哈!算法 --- 一大波数正在靠近——排序
  10. 8.微服务设计 --- 监控