资源描述:
《C语言编程规范.》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言编程规范上海交通大学信息安全学院1命名规则1.1类型命名规则对于结构体类型,按照以下的方法进行定义和命名:typedefstruct_类型描述_t{.....}类型描述_t;例如:typedefstruct_sem_t{inti_sem_id;}sem_t;如果类型描述超过一个单词,则单词之间用下划线分开。例如:typedefstruct_map_node_t{BOOLb_used;UINT32i_id;void*p_data;}map_node_t;1.2变量命名规则对于基本类型的变量,采用如
2、下的命名方法:变量类型_变量名其中基本变量类型定义如下:i:整型c:字符型s:字符数组类型,一般用于缓冲区的定义sz:字符串型p:指针型b:布尔型例如:inti_count;char*sBuffer;BOOLb_used;如果某变量为全局变量,则需要在变量的头上加g。例如intgi_listern_fd;对于结构体类型,其变量类型命名如下:st_结构类型_变量描述例如:sem_tst_sem_lock;请在变量名中使用下划线以分隔单词,坚持使用小写;把大写字母留给宏和枚举常量。对于一些功能显而易见的变
3、量,如循环变量,则可以使用简单的i,j,k,temp等变量名。1.3函数命名规则在采用面向对象的方法时,大部分的函数与某结构体有着密切的联系。其关系类似与“类-成员函数”的关系。对于此类函数,采用如下的命名法则:结构描述_函数功能描述(其中函数功能描述为一个动词或一个动宾结构。例如:conn_create(;conn_get_id(;对于一些不和某结构体密切联系的函数,则使用如下的命名法则:func_函数功能描述(例如:func_handle_login_req(2代码规范2.1缩进使用Tab进行缩进
4、,严禁使用空格缩进。Tab的长度为4格。以下情形应该缩进:函数体开始的位置◆条件、循环、分支的执行部分◆程序转行2.2函数长度一般一个函数的长度在20-50行之间比较适合。如果太长或太短则建议对函数进行分割或合并。即使是特殊情况下,一个函数的长度也不要超过200行。2.3局部变量函数中局部变量的数目不应超过5-10个。一般人脑可以同时处理7个左右不同的事情。超过这个数目则很容易出错。2.4大括号的位置●普通代码段将开始的大括号放在一行的最后,而将结束大括号放在一行的第一位,如下所示:if(xistru
5、e{wedoy}●命名函数:开始的括号是放在下一行的第一位,如下:intfunction(intx{bodyoffunction}●do-while以及if-else需要注意的是结束的括号在它所占的那一行是空的,__除了__它跟随着同一条语句的继续符号。如"while"在do-while循环中,或者"else"在if语句中。如下:do{bodyofdo-loop}while(condition;以及if(x==y{…}elseif(x>y{...}else{…}另外,注意到这种大括号的放置方法减小了空
6、行的数量,但却没有减少可读性。于是,在屏幕大小受到限制的时候,你就可以有更多的空行来写些注释了。2.5对齐方式●如果函数的参数不能被美观地放在一行中,按照下面的方式把它们分开:intlots_of_args(intan_integer,longa_long,shorta_short,doublea_double,floata_float●在左括号之前以及逗号之后添加空格将使程序更加容易阅读。尤其是在逗号之后添加空格。●当我们把一个表达式分成多行的时候,在操作符之前而不是之后分割。if(foo_this
7、_is_long&&bar>win(x,y,z&&remaining_condition●尽力避免让两个不同优先级的操作符出现在相同的对齐方式中。例如,不要象下面那样写:应该附加额外的括号以使得文本缩进可以表示出这种嵌套:●当在一个if语句中嵌套了另一个if-else语句,总是用花括号把if-else括起来。因此,不要写:if(fooif(barwin(;elselose(;而总是要写:if(foo{if(barwin(;elselose(;}●尽力避免在if的条件中进行赋值。例如,不要写:if((f
8、oo=(char*malloc(sizeof*foo==0fatal("virtualmemoryexhausted";而要写:foo=(char*malloc(sizeof*foo;if(foo==0fatal("virtualmemoryexhausted";3注释规范3.1文件头每个文件必须有一个文件头注释,大致说明文件中包含的功能。3.2函数头在每个函数定义的前面必须有一个函数,说明这个函数的功能,参数和返回值。例如://////////////