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

下载本文档

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

文档简介

1、为了提高嵌入式系统编程、大连理工大学软件学院嵌入式系统工程和软件开发编码规范、广州HW有限公司质量管理系统文件、简介、源程序的质量和可服务性,最终提高公司软件产品的生产效率,我们需要对公司软件产品的源程序编写风格进行统一的规范约束。本文的读者是系统分析设计者和CC程序代码作者、测试者。一般,本条例一般规则的内容如下:排版注释命名规则可读性、变量和结构函数程序效率、术语:术语说明:规则:编程时必须遵守的原则。建议:编程时必须考虑的原则。说明:对此规则或建议案执行必要的说明。实例:为此规则或建议提供正方面和负方面的实例。1 .排版,规则1:以缩进样式编写程序块,缩进的空格数为4。说明:开发工具自动

2、生成的代码可能不匹配。1 .排版(续)、规则2:相对独立的程序块之间、变量说明后应添加空行。if (a=b)./code my _ salary=n;your _ salary=n;if (a=b)./code my _ salary=n;your _ salary=n;是,1。排版(继续),规则3:长语句(80个字符)必须分成多行来写,长表达式必须在低优先级运算符中分割新行,运算符放在新行的开头,分割的新行要适当缩进,语句要可读。1 .排版(续),your _ id _ mail . body . head=company _ sub _ manager _ mail _ body _ he

3、ad _ lenup car _ ax 23451 _ formcar _ id * July _ order _ id _ offset offset . cost=vehicle index _ num . cost;car _ ax 23511 _ formcar _ id * July _ order _ id _ offset offset . cost=car _ ax 2351 _ formcar _ formcar排版(续),规则4:不允许多个短语句,一行只写一个语句。范例:下列范例不符合规格:Manager.firstname=jackManager.firstname=Jo

4、nes应该写如下:Manager.firstname=jackManager.firstname=Jones,1 .排版(续)、规则5: if、for、do、while、case、switch、default等语句属于一行,if、for、do、while等语句任意次都用括号括起范例:下列范例不符合规格:if(ID=24)return;应该写如下:if(ID=24)return;1 .排版(续),规则6:大括号分别独占一行,必须位于同一列中,并与引用它们的语句一起向左对齐。函数体开始、类定义、结构定义、枚举定义和if、for、do、while、switch、case语句中的程序将如上所示缩进。1

5、 .排版(续),示例:以下示例不符合规格。For(./code if(.)./code void example _ fun (void)./code必须写入如下:For(./program code if(.)./program code void example _ fun(void)./program code,1 .排版(续)、规则7:双和三元运算符两侧通常需要空格,下标、分量运算符和一元运算符前后没有空格。1 .食字(续),例如(1)逗号,分号后仅包含空格。Int a、b、c;(2)比较运算符、赋值运算符“=”、“=”、算术运算符“”、“%”、逻辑运算符、1。排版(续),(3)!-、

6、/、/指针前后必须有空格(5) if、for、while、switch等后面的括号之间必须有空格,这样if等关键字才会更加突出和明显。If (a=b strcpy(id_code2,67890);范例2: strcpy (id _ code1,12345);Strcpy(id_code2,67890);/* copy the corresponding id to variables */必须按如下方式编写/* copy the corresponding id to variables */str cpy(id _ code 1Strcpy(id_code2,67890);2 .以下代码太小

7、/* show the number n */printf(the number n is % dn,n);/* copy the corresponding id to variables */str cpy(id _ code 1,12345);/* show the number n */printf(the number n is % dn,n);/* copy the corresponding id to variables */str cpy(id _ code 1,12345);2 .注释(续),规则6:具有特定含义的所有变量,对于常量,如果其名称不是完全注释,则在声明时必须注

8、释并说明其特定含义。变量、常量、宏的注释必须位于其上方相邻的位置或右侧。例如/* the max size of shoes */# define dmax _ shoes _ size 45 # define dmax _ shoes _ size 45/* the max注释(续),示例:枚举/数据/关联结构可以描述如下:/* structure definition for employee,including his attribution */structemployee char * name;/* name of employee */void * address;/* addr

9、ess of employee */int age;/* age of employee */,2 .注释(续),规则7:与说明内容相同的缩进。说明:使程序布局整齐,阅读注释,易于理解。2 .注释(继续),下一个代码,排版不整齐,读起来有点不舒服。Void show _ number (int n,int m)/* show the number n */printf(the number n is % dn,n);/* show the number m */printf(the number m is % dn,m);必须更改为以下布局:Void show _ number (int n,

10、int m)/* show the number n */printf(the number n is % dn,n);/* show the number m */printf(the number m is % dn,m);2 .注释(续),规则8:必须创建变量的定义和分支语句(条件分支、循环语句等)的注释。说明:这些语句通常在程序实现特定功能方面起着重要作用,对于维护人员来说,说明可以更好地理解程序,有时比查看设计文档更好。2 .说明(续),规则9: switch语句下的case语句,在特殊情况下,如果必须处理一个case,然后进入下一个case处理,则必须完成case语句处理,然后在下

11、一个case语句之前添加清晰的说明。说明:明确程序作者的意图,有效地防止无故缺失break语句。2 .注解(续),范例(请参阅斜体部分):case 13360 process 1();BreakCase 2: if(.)process 21();Breakelse process 22();/now jump start into case 3 case 33: process 3();Break,2 .注释(续),建议1:不要在一行代码或表达式的中间插入注释。说明:除非必要,否则不能在代码或表示法中间插入注释,否则会容易恶化代码的可理解性。建议2:为函数或过程、变量、结构等指定正确的名称,并

12、合理构建代码的结构,使代码自身成为注释。说明:使用明确准确的函数、变量等命名,可以提高代码的可读性并减少不必要的注释。2 .注解(续),建议3:在程式图块结尾行的右侧显示注解,以指示程式图块的结尾。说明:如果代码片段很长,尤其是嵌套了多个的情况下,这样可以使代码更清晰、更容易阅读。2 .注释(续),示例:参见下面的示例。If (index10)./* while(num=23)*/* end of if(index 10)*/,3。命名规则,规则1:必须根据标识符确定标识符命名方法,每个语素可以用下划线连接。例如:软件大学帐户(SoftwareSchool_account)背景颜色(BackG

13、round_color),3 .命名约定(续),规则2:命名前缀。1,函数名:函数名必须以大写字母开头,全局函数必须以小写字母g开头,2,类名:以大写字母“t”开头,后面的字符反映特定含义,原则是明确表示类的用途和功能。界面必须以大写字母I开头,表示界面。,3 .命名规则(续),规则2:命名前缀。规则3:变量类型:m_|gs_|g_ variable name类的成员变量之前,m_类的静态成员变量ms_静态全局变量gs_常规全局变量g_,3。命名规则(继续)、规则3:库文件(例如公用库、变量库、常量库等)的命名应尽可能表示含义,并使用lib作为前缀。范例:libmath.so/数学资源库lib

14、jpeg.so/JPEG图形资源库规则4:所有常数名称均使用统一大写。3 .命名惯例(续),规则5:设置数值的函数名必须以Set为前缀,从中获取数值的函数名必须以Get为前缀,规则6:标识符的名称必须明确、明确、明确,同时使用整个单词或所有人基本都能理解的缩写以免引起误解。说明:可以去掉“元音”以形成缩写。长单词可取的单词的前几个字母构成了缩写。对不常见的缩写要注释。3 .命名规则(续),规则7:除循环变量外,标识符为I、j、k.4 .可读性,规则4-1:对于复合表达式,在每个子表达式中添加圆括号以明确表达式的操作顺序,避免使用默认优先级。说明:避免在阅读程序时发生误会,并防止默认优先级与设计

15、理念不一致,从而导致程序错误。4 .可读性(续),例如,以下语句中的表达式word=(high 8)| low(1)if(a | b)intinput _ data(int,7)。程序效率,规则1:最小化循环中的工作量。说明:要仔细考虑循环内的语句是否可以放置在循环外,以最小化循环的工作量,从而提高程序的时间效率。7 .程序效率(续),例如,以下代码效率不高:for(I=0);I MAXI)sum=I;Backup=sum必须采用以下格式:for(I=0);I MAXI)sum=I;Backup=sum,7 .程序效率(继续),规则2:在多个循环中,数组的最低维循环必须放在最内层。说明:最新的处理器包含高速缓存部件,在典型的编译中

温馨提示

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

评论

0/150

提交评论