目前比较使用的如下几种命名风格:

unix like

风格:单词用小写字母,每个单词直接用下划线

‘_’

分割,例如

text_mutex

Windows

风格:大小写字母混用,单词连在一起,每个单词首字母大写。不过

Windows

风格如果遇到大写专有用语时会有些别扭,例如命名一个读取

RFC

文本的函数,命令为

ReadRFCText

,看起来就没有

unix like

read_rfc_text

清晰了。

匈牙利命名法是计算机程序设计中的一种命名规则,用这种方法命名的变量显示了其数据类型。匈牙利命名主要包括三个部分:基本类型、一个或更多的前缀、一个限定词。

注意,不要使用匈牙利命名法

1

、标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解

说明:尽可能给出描述性名称,不要节约空间,让别人很快理解你的代码更重要。

示例:好的命名:

int

error_number;

int

number_of_completed_connection;

不好的命名:使用模糊的缩写或随意的字符:

int

n;

int

nerr;

int

n_comp_conns;

2

、除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音

说明:较短的单词可通过去掉

元音

形成缩写,较长的单词可取单词的头几个字母形成缩写,一些单词有大家公认的缩写,常用单词的缩写必须统一。协议中的单词的缩写与协议保持一致。对于某个系统使用的专用缩写应该在注视或者某处做统一说明。

示例:一些常见可以缩写的例子:

argument

可缩写为

arg

buffer

可缩写为

buff

clock

可缩写为

clk

command

可缩写为

cmd

compare

可缩写为

cmp

configuration

可缩写为

cfg

device

可缩写为

dev

error

可缩写为

err

hexadecimal

可缩写为

hex

increment

可缩写为

inc

initialize

可缩写为

init

maximum

可缩写为

max

message

可缩写为

msg

minimum

可缩写为

min

parameter

可缩写为

para

previous

可缩写为

prev

register

可缩写为

reg

semaphore

可缩写为

sem

statistic

可缩写为

stat

synchronize

可缩写为

sync

temp

可缩写为

tmp

3

、产品

/

项目组内部应保持统一的命名风格

说明:

Unix like

windows like

风格均有其拥趸,产品应根据自己的部署平台,选择其中一种,并在产品内部保持一致。

例外:即使产品之前使用匈牙利命名法,新代码也不应当使用。

4

、用正确的反义词组命名具有互斥意义的变量或相反动作的函数等

示例:

add

/

remove              begin

/

end               create

/

destroy

insert

/

delete           first

/

last              get

/

release

increment

/

decrement     put

/

get                 add

/

delete

lock

/

unlock             open

/

close              min

/

max

old

/

new                 start

/

stop              next

/

previous

source

/

target           show

/

hide               send

/

receive

source

/

destination      copy

/

paste              up

/

down

5

、尽量避免名字中出现数字编号,除非逻辑上的确需要编号

示例:如下命名,使人产生疑惑。

#define EXAMPLE_0_TEST_

#define EXAMPLE_1_TEST_

应改为有意义的单词命名

#define EXAMPLE_UNIT_TEST_

#define EXAMPLE_ASSERT_TEST_

6

、标识符前不应添加模块、项目、产品、部门的名称作为前缀

说明:很多已有代码中已经习惯在文件名中增加模块名,这种写法类似匈牙利命名法,导致文件名不可读,并且带来带来如下问题:

1

第一眼看到的是模块名,而不是真正的文件功能,阻碍阅读;

2

文件名太长;

3

文件名和模块绑定,不利于维护和移植。若

foo.c

进行重构后,从

a

模块挪到

b

模块,若

foo.c

中有模块名,则需要将文件名从

a_module_foo.c

改为

b_module_foo.c

7

、命名规范

7.1

文件命名统一采用小写字符

说明:因为不同系统对文件名大小写处理会不同(如

MS

DOS

Windows

系统不区分大小写,但是

Linux

系统则区分),所以代码文件命名建议统一采用全小写字母命名。

7.2

全局变量应增加

“g_”

前缀

7.3

静态变量应增加

“s_”

前缀

说明:增加

g_

前缀或者

s_

前缀,原因如下:

首先,全局变量十分危险,通过前缀使得全局变量更加醒目,促使开发人员对这些变量的使用更加小心。

其次,从根本上说,应当尽量不使用全局变量,增加

g_

s_

前缀,会使得全局变量的名字显得很丑陋,从而促使开发人员尽量少使用全局变量。

7.4

禁止使用单字节命名变量,但允许定义

i

j

k

作为局部循环变量

7.5

不建议使用匈牙利命名法。

7.6

函数命名应以函数要执行的动作命名,一般采用动词或者动词+名词的结构。

7.7

对于数值或者字符串等等常量的定义,建议采用全大写字母,单词之间加下划线

‘_’

的方式命名(枚举同样建议使用此方式定义)。

示例:

#define PI_ROUNDED 3.14

7.8

除了头文件或编译开关等特殊标识定义,宏定义不能使用下划线

‘_’

开头和结尾。

说明:一般来说,

’_’

尾的宏都是一些内部的定

ISO/IEC 9899

(俗称

C99

)中有如下的描述(

6.10.8 Predefined macro names

):

c语言标识符命名作用,C语言-标识符命名相关推荐

  1. C语言预定义的标识符的作用,C语言标识符的分类

    C语言标识符的分类 标识符不能与程序中具有特殊意义的关键字相同,不能与用户编制的函数名.C语言库函数相同,在程序中各种标识符尽量不要重复,以便区分.C语言标识符的分类有哪些呢,一起来了解一下! 1.关 ...

  2. C语言文件缓冲区作用,C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲...

    //文件结构体FILE的理解以及缓冲区再讲 #include #include //要点:文件结构 //struct _iobuf { // char *_ptr; ------当前缓冲区内容指针 / ...

  3. %2d在c语言中什么作用,C语言中的 %2d是什么意思

    修饰符格式说明.意义M%md以宽度m输出整型数,不足m时,左补空格0m%0md以宽度m输出整型数,不足m时,左补零m,n%m.nf以宽度m输出实型小数,小数位为n位例如:设i=123,a=12.345 ...

  4. c语言 const常量作用,C语言 const常量讲解

    //const的本质 //const本质上是伪常量,无法用于数组初始化以及全局变量初始化 //原因在于const仅仅限定变量无法直接赋值,但是却可以通过指针间接赋值 //例如局部常量在栈区,而不在静态 ...

  5. c语言fun的作用,c语言fun函数有什么作用

    c语言fun函数有什么作用 c语言fun函数的作用是被主函数所调用,来定义一个函数或方法,这样在引用时可以用fun表示,比如[int fun(int x,int y)]. c语言fun函数的作用是: ...

  6. c语言中英文的作用,C语言中英文对照.doc

    C语言中英文对照 一File(文件) Load 加载 F3 Pick(选择) Alt-F3 New 新文件 Save 存盘 F2 Write To 写文件 Directory 目录 Change Di ...

  7. struck在c语言中的作用,C语言-选择题及答案.doc

    C语言-选择题及答案.doc 计算机程序设计基础(C语言) 单项选择练习题 说明:带*号的对非信息学院的同学不作要求. 一.基本概念 1. C语言程序是由 C 构成的. A)一些可执行语言 B)mai ...

  8. c语言record的作用,C语言基础 record 2-指针,结构体,链表,文件的输入输出

    指针: 1.指针的概念: 内存区的每一个字节有一个编号,这就是 '地址',由于通过地址能找到所需的变量单元,而地址指向该变量单元,所以将地址形象化称为 '指针'.C/C++中是可多继承的指针,而Jav ...

  9. c语言一维数组作用,c语言 一维数组 多维数组的理解

    数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言中,数组属于构造数据类型.一个数组可以分解为多个数组元素,这些数组元素可 ...

最新文章

  1. 三阶魔方花样玩法,公式汇总
  2. PMCAFF微课堂(已结束) | 典典养车新媒体负责人亲授:如何运营百万级企业服务号
  3. 【BZOJ3712】Fiolki(并查集重构树)
  4. NodeJS开发c++扩展模块
  5. 用软件测试管理效率,软件测试攻略(一):效率工具分享
  6. binarySearch与IndexOf的那些事儿~
  7. (04)System Verilog 常用数据类型示例
  8. PyTorch 1.2 中文文档校对活动 | ApacheCN
  9. 典范杜希奇与机器人_典范英语7_16 杜希奇与机器人.ppt
  10. linux PE制作ramdisk,PE怎样在中建立一个Ramdisk盘
  11. JAVA-初步认识-第十四章-线程间通信-多生产者多消费者问题-JDK1.5新特性解决办法-范例...
  12. java 面试宝典总结
  13. 小程序云开发 免费版 云函数数量超过限制 怎么办
  14. 计算机程序ui设计员工资,ui设计师工资一般多少,发展前景怎么样
  15. Android Studio BMI计算器设计(三种计算标准)
  16. Google 后 Hadoop 时代的新 “三驾马车” -- Caffeine(搜索)、Pregel(图计算)、Dremel(查询)
  17. ftp登录成功,无法取得列表
  18. Kylin(二) 安装与搭建
  19. 微访谈:引爆微博舆论爆发的导火索
  20. 车道线识别之——增强黄色车道线

热门文章

  1. 学计算机选择什么编程语言好一些?
  2. indesign页眉如何左右分布_InDesign排版技巧
  3. 英飞凌TC387学习
  4. 数据库(Mysql)的四种隔离级别
  5. MyBatis之两表关联查询
  6. 微信小程序之如何获取输入框的内容
  7. SQL Sever数据库存储过程
  8. VS2022+PCL 1.12.1
  9. Navicat中设计表时int类型的长度说明
  10. TreeMap、TreeSet简介