C语言编程规范-【3 标识符命名与定义】
@(我的第一个笔记本)
– 2020.3.5/10:49 –【摘自华为】
3.1 通用命名规则
- **
unix like
风格:**单词用小写字母,每个单词直接用下划线’'_"分割,例如text_mutex
,kernel_text_address
。 - **Windows风格:**大小写字母混用,单词连在一起,每个单词首字母大写。
原则3.1 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
说明:尽可能给出描述性名称,不要节约空间,让别人很快理解你的代码更重要。
原则3.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.1 产品/项目组内部应保持统一的命名风格。
建议3.1 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
示例:
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
建议3.2 尽量避免名字中出现数字编号,除非逻辑上的确需要编号。
建议3.3 标识符前不应添加模块、项目、产品、部门的名称作为前缀。
建议3.4 平台/驱动等适配代码的标识符命名风格保持和平台/驱动一致。
建议3.5 重构/修改部分代码时,应保持和原有代码的命名风格一致。
3.2 文件命名规则
建议3.6 文件命名统一采用小写字符。
Google说:
文件名要全部小写,可以包含下划线( _)或短线( -),按项目约定来。
可接受的文件命名:
my_useful_class.c
my-useful-class.c
myusefulclass.c
Google还说:
类型命名每个单词以大写字母开头,不包含下划线:MyExcitingClass
、MyExcitingEnum
。
所有类型命名——类、结构体、类型定义( typedef)、枚举——使用相同约定,例如:
// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;
// enums
enum UrlTableErrors { ...
3.3 变量命名规则
规则3.2 全局变量应增加“g_”前缀。
规则3.3 静态变量应增加“s_”前缀。
规则3.4 禁止使用单字节命名变量,但允许定义i、 j、 k作为局部循环变量。
变量名一律小写,单词间以下划线相连,类的成员变量以下划线结尾,如
my_exciting_local_variable
、 my_exciting_member_variable_
。
Google还说:
建议3.7 不建议使用匈牙利命名法。
建议3.8 使用名词或者形容词+名词方式命名变量。
3.4 函数命名规则
建议3.9 函数命名应以函数要执行的动作命名,一般采用动词或者动词+名词的结构。
建议3.10 函数指针除了前缀,其他按照函数的命名规则命名。
3.5 宏的命名规则
规则3.5 对于数值或者字符串等等常量的定义,建议采用全大写字母,单词之间加下划线"_‟的方式命名(枚举同样建议使用此方式定义)。
规则3.6 除了头文件或编译开关等特殊标识定义,宏定义不能使用下划线"_"开头和结尾。