C语言编程规范简述

C语言编程规范简述
C语言编程规范简述

C语言编程规范简述

注释规范

注释的原则和目的注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的——清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释——过量的注释则是有害的。

注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止重复注释信息。

进行注释时的注意事项:(1)建议边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。(2)注释的内容要清楚、明了,含义准确,防止注释二义性。说明:错误的注释不但无益反而有害。(3)避免在注释中使用缩写,特别是非常用缩写。在使用缩写时或之前,应对缩写进行必要的说明。

命名规范

命名的基本原则:

(1)标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解——尽量采用采用英文单词或全部中文全拼表示,若出现英文单词和中文混合定义时,使用连字符“_”将英文与中文割开。较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。例如:temp->tmp、flag->标志寄存器、statistic->stat、increment->inc、message->msg等缩写能够被大家基本认可。

(2)命名中若使用特殊约定或缩写,则要有注释说明。应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。

(3)自己特有的命名风格,要自始至终保持一致,不可来回变化。个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。

(4)对于变量命名,禁止取单个字符(如i 、j 、k... ),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i 、j 、k 作局部循环变量是允许的。变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。

(5)除非必要,不要用数字或较奇怪的字符来定义标识符。

(6)命名规范必须与所使用的系统风格保持一致,并在同一项目中统一。

(7)在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。对接口部分的标识符应该有更严格限制,防止冲突。如可规定接口部分的变量与常量之前加上“模块”标识等。

(8)用正确的反义词组命名具有互斥意义的变量或相**作的函数等。

变量规范

1 谨慎使用全局(公共)变量:

(1)去掉没必要的公共变量。公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。

(2)仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。

(3)防止局部变量与公共变量同名——通过使用较好的命名规则来消除此问题。

2 数据类型间的转换:

(1)编程时,要注意数据类型的强制转换。当进行数据类型强制转换时,其数据的意义、转换后的取值等都有可能发生变化,而这些细节若考虑不周,就很有可能留下隐患。

(2)对编译系统默认的数据类型转换,也要有充分的认识。

示例:如下赋值,多数编译器不产生告警,但值的含义还是稍有变化。

char chr;

unsigned short int exam;

chr = -1;

exam = chr; // 编译器不产生告警,此时exam为0xFFFF。

(3)尽量减少没有必要的数据类型默认转换与强制转换。例如,所有的unsigned类型都应该有后缀“U”以明确其类型。

(4)合理地设计数据并使用自定义数据类型,避免数据间进行不必要的类型转换。

(5)对自定义数据类型进行恰当命名,使它成为自描述性的,以提高代码可读性。注意其命名方式在同一产品中的统一,并且保证没有多重定义。使用自定义类型,可以弥补编程语言提供类型少、信息量不足的缺点,并能使程序清晰、简洁。

示例:可参考如下方式声明自定义数据类型。下面的声明可使数据类型的使用简洁、明了。

typedef unsigned char BYTE;

typedef unsigned short WORD;

typedef unsigned int DWORD;

下面的声明可使数据类型具有更丰富的含义。

typedef float DISTANCE;

typedef float SCORE;

(6)不要用八进制数——整型常数以”0“开始会被认为是8进制。示例:code[1]=109

code[2]=100

code[3]=052

code[4]=071

如果是对总线消息初始化,会有危险。

效率的规范

(1)编程时要经常注意代码的效率。代码效率分为全局效率、局部效率、时间效率及空间效率。全局效率是站在整个系统的角度上的系统效率;局部效率是站在模块或函数角度上的效率;时间效率是程序处理输入任务所需的时间长短;空间效率是程序所需内存空间,如机器代码空间大小、数据空间大小、栈空间大小等。

(2)在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。

(3)局部效率应为全局效率服务,不能因为提高局部效率而对全局效率造成影响。

(4)循环体内工作量最小化。应仔细考虑循环体内的语句是否可以放在循环体之外,使循环体内工作量最小,从而提高程序的时间效率。

(5)不应花过多的时间拼命地提高调用不很频繁的函数代码效率。

(6)在多重循环中,应将最忙的循环放在最内层,以减少CPU切入循环层的次数。

(7)尽量减少循环嵌套层次。

(8)避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。

(9)尽量用乘法或其它方法代替除法,特别是浮点运算中的除法——浮点运算除法要占用较多CPU资源。

(10)不要一味追求紧凑的代码,因为紧凑的代码并不代表高效的机器码。

. . .

相关主题
相关文档
最新文档