C语言代码书写规范总则_第1页
C语言代码书写规范总则_第2页
C语言代码书写规范总则_第3页
C语言代码书写规范总则_第4页
C语言代码书写规范总则_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1/1C语言代码书写规范总则5.C语言书写规范5.1符号命名规则5.1.1符号名包括常量名、标号名、子程序名等。

这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。

命名采用匈牙利命名法。

规则如下:

(5.1.1.1)const变量,用大写字母命名。

在复合词里用下划线隔开每个词。

(5.1.1.2)复合词中每个单词的第一个字母大写。

除了规则5.1.1.1以外,避免使用下划线。

(5.1.1.4)函数名是复合词的,第一个词采用全部小写,随后每个单词采用第一个字母大写,其它字母小写方式;如果是单个词的,采用全部小写方式。

(5.1.1.5)循环变量可采用i,j,k等,不受上述规则限制。

(5.1.1.7)全局变量词头为g_。

(5.1.1.8)临时变量词头为tmp_。

(5.1.1.10)用小写字母的前缀表示变量的类型,前缀的下一个字母用大写。

表1词头类型词头类型iintegeruunsignedbboolppointerddoublesstring表2词头变量名词头变量名tasktasksigsignalsbbinarysemaphoreswdwatchdogsmmutualexclusionsemaphorestmtimersccountingsemaphoresmsgmessagepipepipe例:

#defineARRAY_SIZE24/*规则5.1.1.1*/intg_iFlag;classMyClass/*规则5.1.1.3*/{};voidsomeFunc()/*规则5.1.1.2和5.1.1.4*/{intnArray[ARRAY_SIZE];unsignedcharuchByte;charszName[];char*pszName=szName;}(5.1.1.11)有些词头(如p和u)可以和其它词头组合。

例:

WDOG_IDwdId;WDOG_IDg_wdId;/*全局watchdogId,故以g_开头*/5.1.2名字的长度一般不要过长或过短。

过长的名字会增加工作量,使程序逻辑流程变得模糊;过短的名字无法表达符号的实际意义。

约定长度范围:

3-31;5.2数据和函数说明5.2.1数据说明次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护。

说明的先后次序应固定,应按逻辑功能排序,逻辑功能块内建议采用下列顺序:

整型说明、实型说明、字符说明、逻辑量说明。

5.2.2如果设计了一个复杂的数据结构,应当通过注释对其变量的含义、用途进行说明。

5.2.3在函数的声明中使用异常声明。

如:

voidf()throw(toobig,toosmall,divzero);在声明一个函数时,将它所抛出的异常列出,便于函数的使用者了解可能会发生哪些异常。

5.3程序注释5.3.1程序注释是程序员与日后的程序读者之间通信的重要手段之一,注释分为文件注释、函数注释和功能注释。

5.3.2正规程序的注释应注意:

注释行的数量占到整个源程序的1/3到1/2。

5.3.3文件注释位于整个源程序的最开始部分,注释后空两行开始程序正文。

它包括:

程序标题。

目的、功能说明。

文件作者、最后修改日期等说明。

例:

./********************************************************************(空一行)标题:Demo.c功能:测试VxWorks的各种系统调用.说明:该程序测试各种VxWorks的系统调用函数。

包括任务(taks)的创建、挂起及任务间通过信号灯实现同步,通过消息队列进行通讯。

程序创建了两个任务:

一个高优先级的任务和一个低优先级的任务。

两个任务间通过一个二进制的信号灯进行同步,通过消息队列进行通讯。

当前版本:

x.x修改信息:

2000.06.05John,InitialVersion2000.07.05Tom,Bugxxxxfixed**************************************************************/(空2行,开始程序正文)5.3.4函数注释通常置于每函数或过程的开头部分,它应当给出函数或过程的整体说明对于理解程序本身具有引导作用。

一般包括如下条目:

模块标题。

有关本模块功能和目的的说明。

调用格式接口说明:

包括输入、输出、返回值、异常。

算法。

如果模块中采用了一些复杂的算法。

例:

file://(注释开头应和上一函数空两行)(注释开头与上一函数最后一行间隔两行)/********************************************************************标题:

assignmentComplete功能:

BSC=MSC消息生成函数,生成assignment_complete指配完成消息(BSMAP消息).格式:

intassignmentComplete(intiCellId,intiServiceChannnelNum,char*pszMSGData)throw(exception1,exception2)输入:

intiCellId:MS所在的小区识别iCellId取值:

0x00-0xffintiServiceChannnelNum:

MS所占的业务信道号码输出:

char*pszMSGData:

指配完成消息数据返回值:0x00正常异常:

exception1异常情况1,exception2异常情况2********************************************************************/(注释后直接开始程序正文,不空行。

)5.3.5功能性注释嵌在源程序体中,用于描述其后的语句或程序段做什么工作,也就是解释下面要做什么,或是执行了下面的语句会怎么样。

而不要解释下面怎么做,因为解释怎么做常常与程序本身是重复的。

例:

/*把amount加到total中*/total=amount+total;这样的注释仅仅是重复了下面的程序,对于理解它的工作并没有什么作用。

而下面的注释,有助于读者理解。

/*将每月的销售额amount加到年销售额total中*/total=amount+total;5.4函数的长度函数编写应尽可能短小精悍,一般不超过两屏,以便于调试和理解。

5.5语句结构为保证语句结构的清晰和程序的可读性,在编写软件程序时应注意以下几个方面的问题:

在一行内只写一条语句,并采用空格、空行和移行保证清楚的视觉效果。

每一个嵌套的函数块,使用一个TAB缩进(可以设定为4个空格),大括号必须放在条件语句的下一行,单独成一行,便于匹对:

如,有一段程序如下:

for(i=1;in-1;i++){t=1;for(j=i+1;jn;j++){if(a[j]a[t])t=j;if(t!=i){work=a[t];a[t]=a[I];a[I]=work;}}}应写为for(i=1;in-1;i++){t=1;for(j=i+1;jn;j++){if(a[i]a[j])t=j;if(t!=1){work=a[t];a[t]=a[i];a[i]=work;}}}文件之中不得存在无规则的空行,比如说连续十个空行。

一般来讲函数与函数之间的空行为2-3行;在函数体内部,在逻辑上独立的两个函数块可适当空行,一般为1-2行。

程序编写首先应考虑清晰性,不要刻意追求技巧性而使得程序难以理解。

每行长度尽量避免超过屏幕宽度,应不超过80个字符。

除非对效率有特殊要求,编写程序要作到清晰第一,效率第二。

尽可能使用函数库。

尽量用公共过程或子程序去代替重复的功能代码段。

要注意,这个代码应具有一个独立的功能,不要只因代码形式一样便将其抽出组成一个公共过程或子程序。

使用括号清晰地表达算术表达式和逻辑表达式的运算顺序。

如将x=a*b/c*d写成x=(a*b/c)*d可避免阅读者误解为x=(a*b)/(c*d)。

避免不必要的转移。

避免采用过于复杂的条件测试。

避免过多的循环嵌套和条件嵌套。

建议不要使用*=,–,/=等运算符。

一个函数不要超过200行。

一个文件应避免超过2000行。

尽量避免使用goto语句。

避免采用多赋值语句,如x=y=z;不鼓励采用?:操作符,如z=(ab)?a:b;不要使用空的ifelse语句。

如if(cMychar=‘A)if(cMychar=‘Z)

温馨提示

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

评论

0/150

提交评论