C 语言编程风格约定
写了多年代码,每个公司的代码风格都不一样,这里结合一些常用的规范,对本站的 C 语言代码风格作一个约定。
排版格式
-
缩进统一采用 4 空格缩进,禁止使用 tab。
-
缩进使用 K&R 缩进风格或 BSD 缩进风格均可,但是要统一。建议使用 K&R 缩进风格。
K&R 缩进风格:
函数左大括号另起一行置于行首,且独占一行。其余情况(if/while/for/else/do等关键字)对应的左花括号旋转于前一行行尾,不独占一行。右大括号独占一行。BSD缩进风格:
左右花括号均独占一行。 -
相对独立的代码块间用一行空行隔开。
-
代码行宽不得超过120个字符。对于条件语句,超过时要合理换行,换行对齐后,采用4字符缩进,条件符号(&&, ||)位于上一行行尾。
-
一元运算符后不加空格,(如 &, *, +, -, ~, !, sizeof, typeof, alignof, attribute, defined, ++, –),二元或三元运算符两侧都要使用一个空格,(如 +, -, =, <, >, *, /, %, |, &, ^, <=, >=, ==, !=, ?:),结构体成员操作符前后不加空格,(., ->)。
-
if, while, for, switch等关键字与后面括号间加一个空格,函数名与函数参数的左括号间不加空格,行尾不要加空格。
-
不要依赖优先级,尽量在必要的地方添加括号保证程序易读性。
注释
-
文件注释应包含:功能描述,作者,创建时间,最后修改时间,修改人,修改内容。具体格式:
/* * Copyright(C) 2022 tt All rights reserved. * * FileName: test.c * Author: tt * Created Date: 2022-05-20 * Description: xxxx * ========== * Modifier Last Modify Time Modify Content * tt1 2022-05-21 增加xxx功能 * tt2 2022-05-24 修改xxx */
-
可以使用
//
或/**/
来注释,注释尽量简洁。告诉别人你的代码做了什么,而不是怎么做的。
命名
-
文件命名格式为 模块名+下划线+功能描述.后缀,且用纯小写。
-
宏命名用纯大写加下划线方式,前面加模块前缀。
-
使用typedef对结构体、联合、枚举取别名时,尽量使用匿名类型,若需要指针自嵌套,加tag前缀。
-
各种变量及函数采用小驼峰方式,全局变量建议可以加上 g_ 前缀。
-
常量尽量写为有意义的宏。
-
使用完整单词或业界公认缩写,避免使人产生误解。
缩写 | 全词 | 缩写 | 全词 | 缩写 | 全词 |
---|---|---|---|---|---|
addr | address | info | information | ret | return |
app | application | ins | insert | scr | screen |
arg | argument | len | length | sec | second |
bk | back | lib | library | seg | segment |
btn | button | lnk | link | sel | select |
buf | buff | log | logical | src | source |
calc | calculate | max | maximum | std | standard |
char | character | mem | memory | str | string |
clk | click | mid | middle | sub | subtract |
cmp | compare | min | minimum | sum | summation |
col | column | msg | message | svr | server |
cpy | copy | mul | multiply | sync | synchronization |
db | database | num | number | sys | system |
del | delete | obj | object | tbl | table |
dest | destination | org | origin original |
temp/tmp | temporary |
dev | device | para | parameter | tran/trans | translate transation transparent |
diff | different | pic | picture | txt | text |
div | divide | pkg | package | unk | unknown |
doc | document | pos | position | upd | update |
drv | driver | pre/prev | previous | upg | upgrade |
env | environment | prog | program | util | utility |
err | error | proc | process procedure |
val | value |
exec | execute | pwd | password | var | variable |
flg | flag | ptr | pointer | ver | version |
func/fn | function | pub | public | vert | vertical |
img | image | reg | register | vir | virus |
inc | increase | req | request | wnd | window |
参考:
C语言:代码规范浅谈
Linux 内核代码风格
Recommended C Style and Coding Standards中文版全文
C语言编程规范 clean code
- 版权声明: