您好,欢迎访问三七文档
C代码开发规范(初稿)地址:福建省福州市金山大道618号橘园洲星网锐捷科技园22幢2层邮编:350002咨询热线:800-858-1515总机:0591-83057799传真:0591-83057710文档版本记录日期版本号修订说明修订人审核人批准人2014-10-230.9创建文档地址:福建省福州市金山大道618号橘园洲星网锐捷科技园22幢2层邮编:350002咨询热线:800-858-1515总机:0591-83057799传真:0591-83057710目录1前言.....................................................................................................................................................41.1原则..................................................................................................................................................41.2适用范围..........................................................................................................................................51.3引用资料...........................................................................................................错误!未定义书签。2编程规范.............................................................................................................................................52.1程序风格..........................................................................................................................................52.2命名规则........................................................................................................................................152.3安全编码........................................................................................................................................192.4一致性和习惯用法........................................................................................................................25附录1三种流行命名法则.........................................................................................................................26地址:福建省福州市金山大道618号橘园洲星网锐捷科技园22幢2层邮编:350002咨询热线:800-858-1515总机:0591-83057799传真:0591-830577101前言按照软件工程方法论,程序是软件设计的自然结果,程序的质量基本取决于设计本身的质量。但是,编写程序的好坏也在很大程度上决定着程序的质量。本编程规定遵循“KISS”原则:KeepItSimple&Stupid。1.1原则尽量使用标准的公用子程序执行既定的程序功能,禁止自行重复编写公司公用库函数中已有的处理或函数。程序的清晰首先在于逻辑的清晰,然后才是格式的清晰。应该利用适当的阶梯形式使程序的层次结构清晰明显。尽量采用简单的算法和数据结构,由于程序的复杂度往往直接依赖于算法和数据结构的复杂度,所以,在对程序的执行效率没有决定性影响的前提下,应尽量考虑选用简单的算法和数据结构。不要为了时空效率而牺牲清晰性。避免滥用语言特色----程序应简洁、易读、好懂。应尽可能的多加注释,以帮助理解每段程序的作用。不要用注解去精确地重复代码----使注释有价值。使用有意义的、简化的变量名及词语标号。严格控制非限制性转移语句“GOTO”的使用,除非:当不使用时将会模糊而不是澄清功能;在同一程序单元内正向转移。清晰随着简洁而来,不要简单认为起一个长的名字就能够增强程序的可读性,在很多时候更会起到误导和影响效率的作用。好的程序犹如华美的诗句,写出“诗句”一样的程序的捷径就是模仿,因此请严格按照规范和模版的要求编写您的每一行代码。地址:福建省福州市金山大道618号橘园洲星网锐捷科技园22幢2层邮编:350002咨询热线:800-858-1515总机:0591-83057799传真:0591-830577101.2适用范围本规范的解释权属于智能终端产品研发部认证小组。本规范适用于采用C进行开发的所有软件产品和应用系统。在各产品(应用系统)的开发过程中,如果出现与本规范相抵触(或需要对本规范进行扩展时),必须先编制出该产品(应用系统)的编程规范,并报主管备案,经批准后方能执行。对于自动构造代码的某些辅助设计工具或者是集成开发环境(如ROSE和VisiualStdio),可以不受本规范的限制,但其命名和自编代码部分必须依照本规范执行。2编程规范2.1程序风格程序之美除了正确的实现功能外,首推的就是清晰、易懂。然而编程人员往往喜欢追求一种速度或者是复杂度的感觉,将代码写的非常复杂,将自己无穷尽的创造力用到了编写最简短的代码或者用在寻求得到结果的最巧妙的方法上,以此表示水平或者是功力,有时候这种技能是用错了地方或者说是根本不该用。2.1.1排版布局2.1.1.1缩进和对齐程序的分界符{和}应独占一行并且位于同一列,同时与引用它们的语句左对齐。{}之内的代码块在{右边一个制表符(4个半角空格符)处左对齐。如果出现嵌套的{},则使用缩进对齐。if、for、while、do、try、catch等语句自占一行,执行语句不能紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写和修改代码时出现失误。正确示例3.1-1:地址:福建省福州市金山大道618号橘园洲星网锐捷科技园22幢2层邮编:350002咨询热线:800-858-1515总机:0591-83057799传真:0591-83057710voidFunction(intx){CSessionLockiLock(mxLock);for(初始化;终止条件;更新){//...}}地址:福建省福州市金山大道618号橘园洲星网锐捷科技园22幢2层邮编:350002咨询热线:800-858-1515总机:0591-83057799传真:0591-830577102.1.1.1缩进复杂宏有时为了实现诸如:对编译器和目标平台自适应;根据用户选项编译不同模块等机制,需要使用大量较为复杂的宏定义块。在宏比较复杂(代码块多于5行)的地方,为了便于阅读和理解,应当遵循与普通C++代码相同的原则进行缩进和排版。为了区别于其他语句和便于阅读,宏语句的#前缀不要与语句本身一起缩进,示例如下://!Windows#ifdefined(__WIN32__)#ifdefined(__VC__)||defined(__BC__)||defined(__GNUC__)//...#defineBAIY_EXPORT__declspec(dllexport)#defineBAIY_IMPORT__declspec(dllimport)#else//编译器不支持__declspec()#defineBAIY_EXPORT#defineBAIY_IMPORT#endif//!OS/2#elifdefined(__OS2__)#ifdefined(__WATCOMC__)#defineBAIY_EXPORT__declspec(dllexport)#defineBAIY_IMPORT#elif!(defined(__VISAGECPP__)&&(__IBMCPP__400||__IBMC__400))#defineBAIY_EXPORT_Export#defineBAIY_IMPORT_Export#endif//!Macintosh#elifdefined(__MAC__)#ifdef__MWERKS__#defineBAIY_EXPORT__declspec(export)#defineBAIY_IMPORT__declspec(import)#endif//Others#else#defineBAIY_EXPORT#defineBAIY_IMPORT#endif地址:福建省福州市金山大道618号橘园洲星网锐捷科技园22幢2层邮编:350002咨询热线:800-858-1515总机:0591-83057799传真:0591-830577102.1.1.2修饰符位置修饰符*和&应该靠近数据类型还是该靠近变量名,是个有争议的活题。本文建议的风格如下:将修饰符*和&紧靠变量名。建议每一个变量的声明独占一行。正确示例如下:char*name;int*x,y;//此处y不会被误解为指针2.1.1.3空行空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会浪费内存,所以不要舍不得用空行。在每个类声明之后、每个函数定义结束之后都要加空行。在一个函数体内,逻揖上密切相关的语句之间不加空行,否则应加空行分隔。文件之中不得存在无规则的空行,比如说连续多个空行。2.1.1.4断行代码行最大长度宜控制在80个字符以内。代码行过长可以按实际情况断行:长表达式要在低优先级操作符处断行,操作符放在新行之首。新行要进行适当的缩进,使排版整齐,语句可读。正确示例如下:report_or_not_flag=((tasknoMAX_ACT_TASK_NUMBER)&&(n7stat_stat_item_valid(stat_item))&&(act_task_table[taskno].result_data!=0));避免头重脚轻的情况,示例如下://错误:fprintf(fp,―%d%d%d%d%d%d‖,lYear,lMonth,lDay,lHour,lMinutes,lSecond);//正确:fprintf(fp,―%d%d%d%d%d%d‖,lYear,lMonth,lDay,lHour,lMinutes,lSecond);地址:福建省福州市金山大道618号橘园洲星网锐捷科技园22幢2层邮编:350002咨询热线:800-858-1515总机:0591-83057799传真:0591-830577102.1.1.5空格函数名之后不要留空格,紧跟左括号(。一元操作符如!、~、++、--、&(地址运算符)等前后不加空格。(向后紧跟;而)、,、;向前紧跟,紧跟处不留空格。对于表达式比较长的for、do、while、switch语句和if语句,为了紧凑起见可以适当地去掉一些空格,如f
本文标题:C代码开发规范
链接地址:https://www.777doc.com/doc-3131764 .html