C语言编程规范.docx
- 文档编号:3787132
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:5
- 大小:16.68KB
C语言编程规范.docx
《C语言编程规范.docx》由会员分享,可在线阅读,更多相关《C语言编程规范.docx(5页珍藏版)》请在冰豆网上搜索。
C语言编程规范
C语言编程规范上海交通大学信息安全学院1命名规则
1.1类型命名规则
对于结构体类型,按照以下的方法进行定义和命名:
typedefstruct_类型描述_t
{
}类型描述_t;
例如:
typedefstruct_sem_t{
inti_sem」d;
}sem_t;
如果类型描述超过一个单词,则单词之间用下划线分开。
例如:
typedefstruct_map_node_t{
BOOLb_used;
UINT32i_id;
void*p_data;
}map_node_t;
1.2变量命名规则
对于基本类型的变量,采用如下的命名方法
变量类型_变量名
其中基本变量类型定义如下:
i:
整型
c:
字符型
s:
字符数组类型,一般用于缓冲区的定义
SZ:
字符串型
p:
指针型
b:
布尔型
例如:
inti_count;
char*sBuffer;
BOOLb_used;
如果某变量为全局变量,则需要在变量的头上加g。
例如
intgi」istern_fd;
对于结构体类型,其变量类型命名如下:
st_结构类型_变量描述
例如:
sem_tst_sem」ock;
请在变量名中使用下划线以分隔单词,坚持使用小写;把大写字母留给宏和枚举常量。
对于一些功能显而易见的变量,如循环变量,则可以使用简单的i,j,k,temp等变量名。
1.3函数命名规则
在采用面向对象的方法时,大部分的函数与某结构体有着密切的联系。
其关系类似与类-成员函数”的关系。
对于此类函数,采用如下的命名法则:
结构描述一函数功能描述(
其中函数功能描述为一个动词或一个动宾结构。
例如:
conn_create(;
conn_get_id(;
对于一些不和某结构体密切联系的函数,则使用如下的命名法则:
func_函数功能描述(
例如:
func_handle_login_req(
2代码规范
2.1缩进
使用Tab进行缩进,严禁使用空格缩进。
Tab的长度为4格。
以下情形应该缩进:
函数体开始的位置
♦条件、循环、分支的执行部分
♦程序转行
2.2函数长度
一般一个函数的长度在20-50行之间比较适合。
如果太长或太短则建议对函数进行分割或合并。
即使是特殊情况下,一个函数的长度也不要超过200行。
2.3局部变量
函数中局部变量的数目不应超过5-10个。
一般人脑可以同时处理7个左右不同的事情。
超过这个数目则很容易出错。
2.4大括号的位置
•普通代码段
将开始的大括号放在一行的最后,而将结束大括号放在一行的第一位,如下所示:
if(xistrue{
wedoy
}
•命名函数:
开始的括号是放在下一行的第一位,如下:
intfunction(intx
{
bodyoffunction
•dowhile以及if-else
需要注意的是结束的括号在它所占的那一行是空的,—除了—它跟随着同一条
语句的继续符号。
如"while"在do-while循环中,或者"else"在if语句中。
如下:
do{
bodyofdo-loop
}while(condition;
以及
if(x==y{
}elseif(x>y{
}else{
}
另外,注意到这种大括号的放置方法减小了空行的数量,但却没有减少可读性。
于是,在屏幕大小受到限制的时候,你就可以有更多的空行来写些注释了。
2.5对齐方式
•如果函数的参数不能被美观地放在一行中,按照下面的方式把它们分开:
doublea_double,floata_float
•在左括号之前以及逗号之后添加空格将使程序更加容易阅读。
尤其是在逗号之后添加空格。
•当我们把一个表达式分成多行的时候,在操作符之前而不是之后分割。
if
(foo_this_is_long&&bar>win(x,y,z
&&remaining_condition
•尽力避免让两个不同优先级的操作符出现在相同的对齐方式中。
例如,不要
象下面那样写:
应该附加额外的括号以使得文本缩进可以表示出这种嵌套:
•S在一个if语句中嵌套了另一个if-else语句,总是用花括号把if-else括起来。
因此,不要写:
if(foo
if(bar
win(;
else
lose(;
而总是要写:
if(foo{
if(bar
win(;
else
lose(;
}
•尽力避免在if的条件中进行赋值。
例如,不要写:
if((foo=(char*malloc(sizeof*foo==0
fatal("virtualmemoryexhausted";
而要写:
foo=(char*malloc(sizeof*foo;
if(foo==0
fatal("virtualmemoryexhausted";
3注释规范
3.1文件头
每个文件必须有一个文件头注释,大致说明文件中包含的功能。
3.2函数头
在每个函数定义的前面必须有一个函数,说明这个函数的功能,参数和返回值例如:
/////////////////////////////////////////////////////////////////////////////
//功能:
创建新的连接节点
//参数:
//ifd:
连接的SocketFD
//返回值:
成功返回节点指针,否则返回NULL
//修改记录:
/////////////////////////////////////////////////////////////////////////////
conn_t*conn_create(inti_fd
{
}
3.3函数内部注释
函数内部重要的变量、必须加以注释,重要的控制结构(循环、条件、多路分支也要加以注释。
对于一个顺序处理的各个阶段也应该加以注释。
但注释并不是越多越好。
3.4结构定义
在结构定义的地方,应该对每个成员变量加以注释。
3.5全局变量
对每个全局变量都应该加以注释。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 规范