c语言编程规范

上传人:正** 文档编号:45018711 上传时间:2018-06-14 格式:PDF 页数:4 大小:155.81KB
返回 下载 相关 举报
c语言编程规范_第1页
第1页 / 共4页
c语言编程规范_第2页
第2页 / 共4页
c语言编程规范_第3页
第3页 / 共4页
c语言编程规范_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《c语言编程规范》由会员分享,可在线阅读,更多相关《c语言编程规范(4页珍藏版)》请在金锄头文库上搜索。

1、编程规范 V0.9 一、文件结构 1.1 头文件结构 1)摘要 2)作者、生成日期、修改日志(包括修改人、修改日期、修改处说明) 3)预处理块 4)函数和结构声明等 使用 ifndef、define、endif 防止头文件被重复引用 用#include格式引用标准库头文件(编译器将从标准库目录开始搜索) 用#include”filename.h”格式引用非标准库的头文件(编译器将从用户的工作目录开始搜索) 头文件只存放“声明”不存放“定义” 不提倡使用全局变量,尽量不要在头文件中出现 extern int value 这类声明 1.2 定义文件的结构 1)作者、生成日期、修改日志 2)对一些头

2、文件的引用 3)程序的实现体 1.3 目录结构 如果头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目 录,以便于维护。例如可将头文件保存于include 目录,将定义文件保存于source 目录(可 以是多级目录)。(gcc中待考) 二、程序的版式 2.1 空行 每个函数定义结束之后都要加空行 相对独立的程序块之间、变量说明之后必须加空行 2.2 代码行 一行代码只做一件事情,如只定义一个变量,或只写一条语句 if、for、while、do、case、switch、default 等语句自占一行,执行语句不得紧跟其后。If、 for、while、do 不论执行语句有多

3、少都要加。 尽量在定义变量的同时初始化该变量(就近原则) 2.3 代码行内的空格 关键字之后要留空格。像 if、for、while 等关键字之后应留一个空格再跟左括号 函数名之后不要留空格,紧跟左括号,以与关键字区别 (向后紧跟,)、,、;向前紧跟,紧跟处不留空格 ,之后要留空格,如Function(x, y, z)。如果;不是一行的结束符号,其后要留空格, 如for (initialization; condition; update) 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=” 、 “+=” “=” 、 “”这类操作符前后不加空格 对于表达式比较长的 for 语句

4、和 if 语句,为了紧凑起见可以适当地去掉一些空格,如 for (i=0; itmp,flagflg,messagemsg);较长 的单词可取单词的头几个字母形成缩写(如 statisticstat,incrementinc) 标识符的长度应当符合“minlength&maxinformation”的原则 采用“小写加下划线”的方式(cur_value) 程序中不要出现仅靠大小写区分的相似标识符 程序中不要出现标识符完全相同的局部变量和全局变量, 尽管两者的作用域不同不会发生 语法错误,但会使人误解 变量的名字应当使用“名词”或者“形容词+名词” 全局函数的名字应当使用“动词”或者“动词+名词

5、”(动宾词组) 尽量避免标识符中出现数字编号,如 Value1,Value2 等,除非逻辑上的确需要 4.2 其他规则 常量全用大写字母,用下划线分隔单词(如 MAX_LENGTH) 静态变量加前缀 s_ (表示 stadic) 如果不得已需要全局变量,则在全局变量前加 g_ (表示 global)(如 g_maxLength) 五、表达式和基本语句 5.1 运算符的优先级 如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级 5.2 符合表达式 避免使用过于复杂的复合表达式 不要有多用途的复合表达式 (如 d=(a=b+c)+r 应进行拆分) 不要把程序中的复合表达式

6、与“真正的数学表达式”混淆 (如 if (a=compValueEPSION)&(x=compValue+EPSION) 格式 应当将指针变量用”=” 或 ”!=” 与 NULL 比较 (如 if (p=NULL) , 不要写成 if (p=0) 或 if (p) 形式) 注意不要把 if (p=NULL) 误写成 if (p=NULL) 5.4 循环语句的效率 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层 如果循环体内存在逻辑判断,并且循环次数很大,可能的话,应将逻辑判断移到循环体的 外面 5.5 for 语句的循环控制变量 不可在 for 循环体内修改循环变量

7、,防止 for 循环失去控制 建议 for 语句的循环控制变量的取值采用“半开半闭区间”的写法(如 0=xN ,这样 N 正好是循环的次数) 5.6 switch 语句 每个 case 语句的结尾不要忘了加 break 不要忘记最后的 default 分支。即使程序不需要,也应保留 default:break,防止别人误 以为你忘了 default 处理 5.7 goto 语句 goto 语句尽量不用 六、函数设计 6.1 参数的规则 参数要写完整,不要只写参数的类型而省略参数名字。如果没有参数就用 void 填充 参数命名要恰当,顺序要合理。如果有参数之间的值传递,则目的参数在前,源参数在后

8、 不要有太多的参数,尽量控制在 5 个以内 防止将函数的参数作为工作变量 6.2 返回值的规则 不要省略返回值的类型。 C 中不加类型说明的函数是按整型处理, 容易被误解成 void 类型 函数名字与返回值类型在语义上不可冲突。 注意,C 标准库函数 getchar 是 int 类型而不是 char 类型 不要将正常值和错误标志混在一起返回。正常值用输出参数获得,而错误标志用 return 语句返回 6.3 其他建议 函数的功能要单一,规模要小,尽量控制在 200 行以内(不包括注释和空行) 尽量避免函数带有“记忆”功能,相同的输入应当产生相同的输出。函数的静态局部变量 是函数的“记忆”存储器

9、,建议尽量少用。 非调度函数应减少或防止控制参数,尽量只使用数据参数 设计高扇入、合理扇出(小于 7)的函数,即函数被多个函数调用,而本身调用的函数较 少 减少使用递归 七、其他 先优化数据结构和算法,再优化执行代码 不要只追求紧凑的代码,因为紧凑的代码不一定能产生高效的机器码 分配的内存要记得释放,打开的文件操作完要关闭 当心那些视觉上不易分辨的操作符发生书写错误,如“=” 、 “|” , “&”等 变量被创建之后应当及时把他们初始化 当心变量的初值、缺省值错误,或者精度不够 尽量使用显式的数据类型转换,避免让编译器进行隐式的类型转换 当心变量发生上溢或下溢,数组的下标越界 不要忘记编写错误

10、处理程序,当心错误处理程序本身有误 当心文件 I/O 有误 在函数体的“出口处” ,对 return 语句的正确性和效率进行检查。Return 语句不可返回指 向“栈内存”的指针,因为该内存在函数体结束时自动销毁 编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即 P、V 操作)等手段 对其加以保护,防止多个进程用此函数时可能使全局变量变为不可知状态 尽量使用标准库函数,不要重新编写已经存在的库函数 把编译器的选项设置成最严格状态,如在 gcc 中使用Wall 选项(产生尽可能多的警告信 息,Werror 选项(把所有的警告当成错误处理,在使用 make 时很有用) 编写代码时记得随时保存,并定期备份 使用宏定义表达式时, 要使用完备的括号 (如 #define RECTANGLE_AREA( a, b) ( (a) * (b) ) 使用宏时,不允许参数发生变化 主要参考: 【1】 高质量 C+编程指南 【2】 华为公司编程语法规范 有什么需要修改的请联系

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号