编码规范培训(C)_第1页
编码规范培训(C)_第2页
编码规范培训(C)_第3页
编码规范培训(C)_第4页
编码规范培训(C)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

刘智慧liuzh@编码规范培训银行事业部内容提要编码规范概述编码规范细则GAPS二次开发编码规范介绍IOCCC国际混乱C代码大赛#include"stdio.h"main(inta,char*b[]){

for(a[b++]="hello,world!\n";(!!b)[*b]&&(a--||--b&&execlp(*b,*b,b[!!b]+!!b,!b));**b=!b)write(!!*b,*b,!!**b);}编码规范的必要性

在编程过程中,如果每个程序员都按自己的习惯和风格编写程序,势必降低整个程序的可读性,对软件的测试、交流、重用以及软件的维护等多方面均会产生极为不利的影响。为了解决这个问题,提倡统一风格。

编程水平=编程规范+编程效率减少错误的发生if(i==0)

if(i=0)if(0==i)建议做法便于后期的维护你愿意维护别人写的代码吗?公司编码规范总则可读性结构化容错性可重用性内容提要编码规范概述编码规范细则GAPS二次开发编码规范介绍编码规范细则书写排版规范命名规范语言规范其它规范书写排版规范——空格关键字之后要留空格

if(...),之后要至少要留一个空格

voidFunc(intx,inty)如果;不是一行的结束符号,其后要留一个空格,在for语句居多

for(i=0;i<10;i++)双目运算符=、==、!=、||等左右各留一个空隔

*x=&y;注释前后适当加一个或若干个空格

/*注释*/

书写排版规范——空格函数名之后紧跟左括号‘(’,中间不要留空格

voidFunc(intx,inty)‘(’之后和‘)’、‘,’、‘;’之前都不留空格

for(i=0;i<10;i++)单目运算符*、&等前后都不留空格*x=&y;“[]”、“.”、“->”这类操作符前后不留空格

array[5]=b->data;书写排版规范——空行在一个函数体内,变量定义与函数语句之间要加空行

voidFunction1(…){

intn;空行statement1;…}书写排版规范——空行逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。

if(condition) { statement1; } else { statement2; }

书写排版规范——空行每个函数定义结束之后都要加一个或若干个空行voidFunction1(…){…}空行voidFunction2(…){…}书写排版规范——对齐‘{’和‘}’永远都单独成行并且位于同一列,同时与引用它们的语句左对齐voidFunction1(…){…}而不是voidFunction1(…){…}书写排版规范——对齐CASE语句语的case部分与switch的‘{’列对齐switch(variable) 而不是 switch(variable){ {casevalue1: casevalue1: break; break;casevalue2: casevalue2:

break; break;default: default:

break; break;}}书写排版规范——缩进缩进量统一使用4个字符建议使用空格而不是Tab字符

同层次的代码在同层次的缩进层上书写排版规范——长行拆分长表达式要在低优先级操作符处划分新行,操作符放在新行之首

if((very_longer_variable1>=very_longer_variable12)&&(very_longer_variable3<=very_longer_variable14)&&(very_longer_variable5<=very_longer_variable16)){

dosomething();}书写排版规范——长行拆分如果函数中的参数较长,则要进行适当的划分voidFunction(floatvery_longer_var1, floatvery_longer_var2, floatvery_longer_var3)长字符拆分“verylongstring\line”或者“verylongstring”“line”命名规范——标示符变量的名字应当使用“名词”或者“形容词+名词”floatvalue;floatoldValue;floatnewValue;命名规范——标示符函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。各单词连写,词首字母大写例如:DrawBox();命名规范——标示符所有宏定义、typedef定义类型、枚举常数、常量全用大写字母命名,用下划线分割单词constintMAX_LENGTH=100;#defineFILE_PATH“/usr/tmp”命名规范——标示符全局变量加前缀g_(表示global)例如:int

g_iCount;注:对于int

型,还要加i命名规范——标示符考虑到习惯性问题,局部变量中可采用通用的命名方式,如n、i作为循环变量,p、q作为指针等命名规范——源文件采用小写字母命名文件,避免取一些比较通俗的文件名,如:main.c,public.c等。语言规范——宏宏体和参数都要加上括号#defineMAX(a,b)((a)>(b)?(a):(b))而不是#defineMAX(a,b)a>b?a:b

语言规范——表达式如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级leap_year=((year%4==0)&&(year%100!=0))||(year%400==0)语言规范——IF语句if语句本身自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}if(width<height){

dosomething();}而不是if(width<height)dosomething();

语言规范——比较不可将浮点变量用“==”或“!=”与任何数字比较if((x>=-EPSINON)&&(x<=EPSINON))(EPSINON是允许的误差,即精度)

而不是if(x==0.0)语言规范——goto语句少用、慎用goto语句{… {… {…

gotoerror; } }}error:…语言规范——函数return语句不可返回指向“栈内存”的“指针”,因为该内存在函数体结束时被自动销毁char*Func(void){ charstr[30]; … returnstr; }语言规范——注释一目了然的语句不加注释i++; /*i加1*/多余的注释边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要及时删除

注释的位置应与被描述的代码相邻,可以与语句在同一行,也可以在上行,但不可放在下方。同一结构中不同域的注释要对齐。其它规范防止引用已经释放的内存空间char*p=(char*)malloc(100);strcpy(p,“hello”);free(p); /*p所指的内存被释放,但是p所指的地址仍然不变*/…if(p!=NULL) /*没有起到防错作用*/{

strcpy(p,“world”); /*出错*/}其它规范函数中分配的内存,在函数退出之前要释放函数中申请的(为打开文件而使用的)文件句柄,在函数退出前要关闭内容提要编码规范概述编码规范细则GAPS二次开发编码规范介绍GAPS编码规范——组件函数声明模板

/************************************************************************组件函数定义组件函数名称:组件名称:组件功能:组件参数:

序号参数名称资源类别缺省值是否可空参数说明组件结果状态:

结果状态码结果说明缺省日志信息:

日志级别日志宏响应信息:

内部响应码内部响应信息

主要操作元素:

元素路径操作主要操作库表:

表名操作

使用限制:

项目组:程序员:发布日期:YYYY年mm月DD日修改日期:YYYY年mm月DD日参数使用示例:************************************************************************/IRESULTXXX_XXXXX(HXMLTREElXmlhandle)GAPS编码规范——函数组件库头部注释模板

/***************************************************************************版权所有:杭州恒生电子股份有限公司项目名称:综合应用前置(GAPS)项目版本:V1.0操作系统:AIX4.3文件名称:文件描述:项目组:中间业务产品发展部研发组程序员:发布日期:修订:修改日期:****************************************************************************//****************************************************************************修改记录修改日期:修改内容:修改人:****************************************************************************//****************************************************************************总体说明:组件函数名称组件名称发布日期程序员修改日期修改人

温馨提示

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

评论

0/150

提交评论