C语言编程规范_第1页
C语言编程规范_第2页
C语言编程规范_第3页
C语言编程规范_第4页
C语言编程规范_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语言编程规范 上海交通大学信息安全学院1命名规则1.1 类型命名规则对于结构体类型,按照以下的方法进行定义和命名: typedef struct _类型描述 _t. 类型描述 _t;例如:typedef struct _sem_t int i_sem_id; sem_t;如果类型描述超过一个单词,则单词之间用下划线分开。 例如:typedef struct _map_node_t BOOL b_used;UINT32 i_id;void * p_data; map_node_t;1.2 变量命名规则对于基本类型的变量,采用如下的命名方法:变量类型 _变量名其中基本变量类型定义如下:i :整

2、型c :字符型s :字符数组类型,一般用于缓冲区的定义sz :字符串型p :指针型b :布尔型例如:int i_count;char * sBuffer;BOOL b_used;如果某变量为全局变量,则需要在变量的头上加 g 。例如int gi_listern_fd;对于结构体类型,其变量类型命名如下:st_结构类型 _变量描述例如:sem_t st_sem_lock;请在变量名中使用下划线以分隔单词,坚持使用小写; 把大写字母留给宏 和枚举常量。对于一些功能显而易见的变量, 如循环变量, 则可以使用简单的 i, j, k, temp 等变量名。1.3 函数命名规则在采用面向对象的方法时,大部

3、分的函数与某结构体有着密切的联系。其关 系类似与“类-成员函数”的关系。对于此类函数,采用如下的命名法则:结构描述 _函数功能描述 (其中函数功能描述为一个动词或一个动宾结构。例如:conn_create(;conn_get_id(;对于一些不和某结构体密切联系的函数,则使用如下的命名法则:func_函数功能描述 (例如:func_handle_login_req(2代码规范2.1 缩进使用 Tab 进行缩进,严禁使用空格缩进。 Tab 的长度为 4格。以下情形应该缩进:函数体开始的位置条件、循环、分支的执行部分程序转行2.2 函数长度一般一个函数的长度在 20-50行之间比较适合。如果太长或

4、太短则建议对 函数进行分割或合并。即使是特殊情况下,一个函数的长度也不要超过 200行。2.3 局部变量函数中局部变量的数目不应超过 5-10个。一般人脑可以同时处理 7个左右 不同的事情。超过这个数目则很容易出错。2.4 大括号的位置普通代码段将开始的大括号放在一行的最后,而将结束大括号放在一行的第一位,如下 所示:if (x is true we do y命名函数:开始的括号是放在下一行的第一位,如下:int function(int xbody of functiondo-while 以及 if-else需要注意的是结束的括号在它所占的那一行是空的, _除了 _它跟随着同一 条语句的继续

5、符号。 如 "while" 在 do-while 循环中, 或者 "else" 在 if 语句中。 如下: do body of do-loop while (condition;以及if (x = y else if (x > y . else 另外,注意到这种大括号的放置方法减小了空行的数量,但却没有减少可读 性。于是,在屏幕大小受到限制的时候,你就可以有更多的空行来写些注释了。2.5 对齐方式如果函数的参数不能被美观地放在一行中,按照下面的方式把它们分开:int lots_of_args (int an_integer, long a_lon

6、g, short a_short,double a_double, float a_float在左括号之前以及逗号之后添加空格将使程序更加容易阅读。尤其是在逗号 之后添加空格。当我们把一个表达式分成多行的时候,在操作符之前而不是之后分割。 if (foo_this_is_long && bar > win (x, y, z&& remaining_condition尽力避免让两个不同优先级的操作符出现在相同的对齐方式中。例如,不要 象下面那样写:应该附加额外的括号以使得文本缩进可以表示出这种嵌套:当在一个 if 语句中嵌套了另一个 if-else 语句,

7、总是用花括号把 if-else 括起来。 因此,不要写:if (fooif (barwin (;elselose (;而总是要写:if (foo if (barwin (;elselose (;尽力避免在 if 的条件中进行赋值。例如,不要写:if (foo = (char * malloc (sizeof *foo = 0fatal ("virtual memory exhausted"而要写:foo = (char * malloc (sizeof *foo;if (foo = 0fatal ("virtual memory exhausted"3注释规范3.1 文件头每个文件必须有一个文件头注释,大致说明文件中包含的功能。3.2 函数头在每个函数定义的前面必须有一个函数,说明这个函数的功能,参数和返回 值。例如:/ 功能:创建新的连接节点/ 参数:/ i_fd:连接的 Socket FD/ 返回值:成功返回节点指针,否则返回 NULL/ 修改记录:/conn_t * conn_create(int i_fd.3.3 函数内部注释函数内部重要的变量、必

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论