您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 最完整的C语言编程规范
1C编程规范第一章概述术语定义Pascal大小写将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal大小写。例如:BackColorCamel大小写(骆驼式)标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backColor文件命名组织1.3.1文件命名1文件名遵从Pascal命名法,无特殊情况,扩展名小写。1.3.2文件注释1在每个文件头必须包含以下注释说明/*--------------------------------------------------------*作者:*文件名:*创建时间:*最后修改时间:*文件功能描述:--------------------------------------------------------*/文件功能描述只需简述,具体详情在函数的注释中描述。第二章代码外观2.1列宽代码列宽控制在80字符左右,方便阅读。2.2换行当表达式超出或即将超出规定的列宽,遵循以下规则进行换行1、在逗号后换行。2、在操作符前换行。3、规则1优先于规则2。当以上规则会导致代码混乱的时候自己采取更灵活的换行规则。2.3缩进缩进应该是每行一个Tab(4个空格),不要在代码中使用Tab字符。把使用的文本编辑器的Tab调成4个空格2.4空格在以下情况中要使用到空格1.除了.之外,所有的二元操作符都应用空格与它们的操作数隔开。一元操作符、++及--与操作数间不需要空格。如2a+=c+d;a=(a+b)/(c*d);while(d++=s++){n++;}PrintSize(“sizeis“+size+“\n”);2.6花括号-{}1、左花括号“{”放于关键字或方法名的下一行并与之对齐。如if(condition){}publicintAdd(intx,inty){}2、左花括号“{”要与相应的右花括号“}”对齐。3、左花括号“{”单独成行,不与任何语句并列一行。4、if、while、do语句后一定要使用{},即使{}号中为空或只有一条语句。如if(somevalue==1){omevalue=2;}5、右花括号“}”后建议加一个注释以便于方便的找到与之相应的{。如while(1){if(valid){}//ifvalidelse{}//notvalid}//endforever第三章程序注释3.4注释概述1、修改代码时,总是使代码周围的注释保持最新。2、在每个例程的开始,提供标准的注释样本以指示例程的用途、假设和限制很有帮助。注释样本应该是解释它为什么存在和可以做什么的简短介绍.3、避免在代码行的末尾添加注释,而是在行前用注释进行注释,如:/*下面的语句有什么用呢*/A=a++;在批注变量声明时,行尾注释是合适的;在这种情况下,将所有行尾注释在公共制表位处对齐。34、避免杂乱的注释,如一整行星号。而是应该使用空白将注释同代码分开。5、在编写注释时使用完整的句子。注释应该阐明代码,而不应该增加多义性。6、在编写代码时就注释,因为以后很可能没有时间这样做。10、避免多余的或不适当的注释,如幽默的不主要的备注。12、注释代码中不十分明显的任何内容。13、为了防止问题反复出现,对错误修复和解决方法代码总是使用注释,尤其是在团队环境中。14、对由循环和逻辑分支组成的代码使用注释。这些是帮助源代码读者的主要方面。15、在整个应用程序中,使用具有一致的标点和结构的统一样式来构造注释。16、用空白将注释同注释分隔符分开。在没有颜色提示的情况下查看注释时,这样做会使注释很明显且容易被找到。17、为了是层次清晰,在闭合的右花括号后注释该闭合所对应的起点。namespaceLangchao.Procument.Web{}//namespaceLangchao.Procument.Web1.单行注释该类注释用于1方法内的代码注释。如变量的声明、代码或代码段的解释。注释//注释语句privateintnumber;2方法内变量的声明或花括号后的注释,注释示例:if(1==1)//alwaystrue{statement;}//alwaystrue2.函数前的注释/***********************************************************可编辑文本框选项左移*功能描述:按向左键时,可编辑文本框的编辑位向左移一位。*输入参数:pbox指向可编辑文本框的指针*返回参数:无*作者:Liy-tj*测试通过时间:12/7/2008******************************************************/voidEditTxtBoxLeftGUI(EDIT_TXT_BOX*pbox){……}第四章声明每行声明数4一行只建议作一个声明:如intlevel;//推荐intsize;//推荐intx,y;//不推荐初始化在变量声明时就对其做初始化。位置变量建议置于块的开始处,不要总是在第一次使用它们的地方做声明。如voidMyMethod(){intint1=0;//beginningofmethodblockif(condition){intint2=0;//beginningofifblock...}}避免不同层次间的变量重名,这样会倒致很难发现的错误:intcount;...voidMyMethod(){if(condition){intcount=0;//避免...}...}第五章命名规范命名概述名称应该说明“什么”而不是“如何”。可以使用GetNextStudent(),而不是GetNextArrayElement()。命名原则是:以下几点是推荐的命名方法。1、避免容易被主观解释的难懂的名称,如方面名AnalyzeThis(),或者属性名xxK8。这样的名称会导致多义性。3、只要合适,在变量名的末尾加计算限定符(Avg、Sum、Min、Max、Index)。4、在变量名中使用互补对,如min/max、begin/end和open/close。5、布尔变量名应该包含Is,这意味着Yes/No或True/False值,如fileIsFound。6、在命名状态变量时,避免使用诸如Flag的术语。状态变量不同于布尔变5量的地方是它可以具有两个以上的可能值。不是使用documentFlag,而是使用更具描述性的名称,如documentFormatType。7、即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如i或j。可能的情况下,尽量不要使用原义数字或原义字符串,如Fori=1To7。而是使用命名常数,如Fori=1ToNUM_DAYS_IN_WEEK以便于维护和理解。8、在为宏定义命名的时候,都使用大写字母,并以下划线分隔每个单词,最后应相关模块名结束如:#defineCLS_CMD_LCD0x03我们可以知道是LCD的“清除”命令。大小写规则大写下表汇总了大写规则,并提供了不同类型的标识符的示例。标识符大小写示例结构体枚举类型PascalPascalOneStructErrorLevel全局变量PascalRedValue函数PascalWriteSrtSpi局部变量宏定义Camel全部大写backColorCLS_CMD_LCD缩写为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则:1不要使用计算机领域中未被普遍接受的缩写,如遇到要大家讨论后使用。2在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用UI作为UserInterface缩写,用OLAP作为On-lineAnalyticalProcessing的缩写。3在使用缩写时,对于超过两个字符长度的缩写请使用Pascal大小写或Camel大小写。例如,使用HtmlButton或HTMLButton。结构体1、使用Pascal大小写。2、用名词或名词短语命名类。63、使用全称避免缩写,除非缩写已是一种公认的约定,如URL、HTML4、不要使用下划线字符(_)。结构体成员以下规则概述字段的命名指南:1、使用Camel大小写。2、拼写出成员中使用的所有单词。仅在开发人员一般都能理解时使用缩写。名称不要使用大写字母。下面是正确命名的字段的示例。StructSampleClass{char*url;char*destinationUrl;}枚举(Enum)1对于Enum类型和值名称使用Pascal大小写。2少用缩写。函数以下规则概述方法的命名指南:1使用Pascal大小写。2函数的命名以描述性的动词开头,并在最后以引函数所操作的模块结束。如:WriteByteUart0(charwrtByte)以Write开头,以操作的模块Uart0结束。这样既不会冲突,也容易理解。常量(const)以下规则概述常量的命名指南:所有单词大写,多个单词之间用_隔开。如conststringPAGE_TITLE=Welcome;第六章语句每行一个语句每行最多包含一个语句。如a++;//推荐b--;//推荐a++;b--;//不推荐6.2复合语句复合语句是指包含父语句{子语句;子语句;}的语句,使用复合语句应遵循以下几点1子语句要缩进。2左花括号“{”在复合语句父语句的下一行并与之对齐,单独成行。3即使只有一条子语句要不要省略花括号“{}”。如while(d+=s++){n++;}returnmyDisk.size();return(size?size:defaultSize);76.4if、if-else、ifelse-if语句if、if-else、ifelse-if语句使用格式if(condition){statements;}if(condition){statements;}else{statements;}if(condition){statements;}elseif(condition){statements;}else{statements;}6.4forfor语句使用格式for(initialization;condition;update){statements;}空的for语句(所有的操作都在initialization、condition或update中实现)使用格式for(initialization;condition;update);//updateuserid注意1在循环过程中不要修改循环计数器2对每个空循环体给出确认性注释。6.5while语句while语句使用格式while(condition){8statements;}空的while语句使用格式while(condition);do-while语句do-while语句使用格式do{statements;}while(condition);switch-case语句switch-case语句使用格式switch(condition){case1:statements;break;case2:statements;break;default:statements;break;}注意:1、语句switch中的每个case各占一行。2、语句switch中的case按字母顺序排列。3、为所有switch语句提供default分支。4、所有的非空case语句必须用break;语句结束。goto语句goto语句使用格式gotoLabel1:statements;Lable1:statements;6.10表达式1避免在表达式中用赋值语句3避免对浮点类型做等于或不等于判断
本文标题:最完整的C语言编程规范
链接地址:https://www.777doc.com/doc-4658055 .html