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

下载本文档

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

文档简介

C语言命名及编程标准CXL前言标准的重要性今天人们越来越明白软件设计更多地是一种工程,而不是一种个人艺术。由于大型产品的开发通常由很多的人协同作战,如果不统一编程标准,最终合到一起的程序,其可读性将较差,这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不标准的代码隐含错误的可能性也比较大。前言标准的重要性BELL实验室的研究资料说明,软件错误中18%左右产生于概要设计阶段,15%左右产生于详细设计阶段,而编码阶段产生的错误占的比例那么接近50%;分析说明,编码阶段产生的错误当中,语法错误大概占20%左右,而由于未严格检查软件逻辑导致的错误、函数(模块)之间接口错误及由于代码可理解度低导致优化维护阶段对代码的错误修改引起的错误那么占了一半以上。可见,提高软件质量必须降低编码阶段的错误率。如何有效降低编码阶段的错误呢?BELL实验室的研究人员制定了详细的软件编程标准,并培训每一位程序员,最终的结果把编码阶段的错误降至10%左右,同时也降低了程序的测试费用,效果相当显著。前言标准的重要性本文从代码的可维护性(可读、可理解性、可修改性)、代码逻辑与效率、函数(模块)接口、可测试性四个方面阐述了软件编程标准;分为二个局部介绍,第一局部为命名标准,第二局部为编程标准。本标准为天马公司强制执行工程。前言标准的重要性我们制定一种编程风格,希望能到达以下目的:

可移植(Portability)

连贯(Consistency)

整洁(Neatness)

易于维护(Easymaintenance)

易于理解(Easyunderstanding)

简洁(Simplicity)

在一个团队合作的大型工程中,这种风格要贯穿始终。采用通用的代码编写风格可以减轻代码维护的工作量并降低维护费用;这种通用的代码风格还可以防止重写代码。第一局部C语言命名标准一、通那么1、在所有命名中,都应使用标准的英文单词或缩写。不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角,

声母、韵母等。2、所有命名都应遵循达意原那么,即名称应含义清晰、明确。3、所有命名都不易过长,应控制在规定的最大长度以内,一般不超过32个字节。第一局部C语言命名标准一、通那么4、所有命名都应尽量使用全称。5、如果命名使用缩写,那么尽量应该使用通用缩写;如不知道通用缩写,那么必须对其进行注释和说明。6、缩写原那么形成缩写的几种技术:1)去掉所有的不在词头的元音字母。如screen写成scrn,primtive写成prmv。第一局部C语言命名标准6、缩写原那么2)使用每个单词的头一个或几个字母。如ChannelActivation写成ChanActiv,ReleaseIndication写成RelInd。3)使用变量名中每个有典型意义的单词。如CountofFailure写成FailCnt。4)去掉无用的单词后缀ing,ed等。如PagingRequest写成PagReq。5)使用标准的或惯用的缩写形式(包括协议文件中出现的缩写形式)。如BSIC(BaseStationIdentificationCode)、MAP(MobileApplicationPart)。第一局部C语言命名标准6、缩写原那么关于缩写的准那么:1)缩写应该保持一致性。如Channel不要有时缩写成Chan,有时缩写成Ch。Length有时缩写成Len,有时缩写成len。2)在源代码头部参加注解来说明协议相关的、非通用缩写。3)标识符的长度不超过32个字符。第一局部C语言命名标准二、具体标准1、工程名根据工程来命名,能反映工程的最主要特征。例如:天马公司的Windows控制程序,工程名可命为TWIN2、文件名基于工程名,开头3个字母应说明与哪一个工程相关。后面的字母应能够区别不同的功能。严格区分大小写。长度不限于8.3格式,建议不多于30个字符。假设文件用于定义和实现函数(类),建议文件名与函数〔类〕名保持一致。第一局部C语言命名标准2、文件名例如:TWIN工程的文件名的前三个字符为TW_,TW_ToolPosmeter.cppTW_MachParameter.cppTW_SpindlePos.cpp等等第一局部C语言命名标准3、函数名参照工程具体的命名标准。推荐使用动宾结构。函数名应清晰反映函数的功能、用途。函数名最长不得超过30个字符。函数名是复合词的,每个单词采用第一个字母大写,其它字母小写方式。全局函数必须以小写前缀"g"开头。例如:longOpenControl(void);第一局部C语言命名标准4、变量名原那么上,变量名的命名遵从匈牙利记法。即:前缀

+

类型

+

变量名其中:前缀是可选项,以小写字母表示;根本类型是必选项,以小写字母表示;变量名是必选项,可多个单词(或缩写)合在一起,每个单词首字母大写。变量名最长不得超过20个字符。第一局部C语言命名标准4、变量名前缀列表如下:前缀意义举例ms_类的静态成员变量ms_ListFuncm_类成员变量或m_ListBox,模块级变量m_Sizes_静态全局变量s_Countg_普通全局变量g_MyVar第一局部C语言命名标准4、变量名根本类型列表如下:根本类型意义 举例b布尔 bIsOKby字节 byNumc 字符 cMyChari整数 iTestNumberu无符号整数uCountul无符号长整数ulTimew字 wPara第一局部C语言命名标准4、变量名根本类型意义 举例dw双字dwParal长型lParaf浮点数fTotald长浮点数dDatah句柄hWndp指针pTheWordlp长指针lpCmda数组aErr第一局部C语言命名标准4、变量名根本类型意义 举例sString字符串sTempszNULL结束的字符串szTrees[]enm枚举型enmDaysxyx,y坐标xyPos第一局部C语言命名标准5、类名类名反映具体含义,以清晰表达类的用途和功能为原那么。接口必须以大写"I"开头,代表

Interface。当名称由多个单词构成时,每一个单词的第一个字母必须大写。第一局部C语言命名标准6、宏和常量的命名宏和常量的命名规那么:单词的字母全部大写,各单词之间可用下划线隔开。命名举例:例如:#define

MAXNUMBER

100#defineMAX_SLOT_NUM8#defineEI_ENCR_INFO0x07#defineDO(do){iRet=do;if(iRet)returniRet;}第一局部C语言命名标准7、结构和结构成员的命名结构名各单词的字母均为大写,单词间可用下划线连接。可用或不用typedef,但是要保持一致,不能有的结构用typedef,有的又不用。结构变量加小写前缀“t"。typedef

struct

POINT{int

x;int

y;}

tPOINT;结构成员的命名同变量的命名规那么。第一局部C语言命名标准8、枚举和枚举成员的命名枚举名各单词的字母均为大写,单词间可用下划线隔开。枚举成员的命名规那么:单词的字母全部大写,各单词之间可用下划线隔开;要求各成员的第一个单词相同。枚举变量加小写前缀“e“.命名举例:typedef

enum

_KFILE_OPEN_MODE{FILE_OPEN_READONLY

=

0,FILE_OPEN_READWRITE

=

1,FILE_CREATE_ALWAY

=

3}

eKFILE_OPEN_MODE;第一局部C语言命名标准9、联合名联合名各单词的字母均为大写,单词间可用下划线连接。联合变量名加小写前缀“j“,其成员按变量命名。例:typedef

union

_VARIANT{char

cVal;int

iVal;long

lVal;float

fVal;}jVARIANT;第二局部C语言编程标准一、

整体要求

代码编写规那么应该在建立在一个工程工程之前。该规那么应该贯穿整个工程的始终以保证代码的一致性。采用标准的代码编写惯例,可大大简化工程的维护负担。第二局部C语言编程标准二、编程具体标准1、根本要求1.1程序结构清析,简单易懂,单个函数的程序行数一般不得超过200行。

1.2代码精简,防止垃圾程序。

1.3尽量使用预定义变量。

1.4不要随意定义全局变量,尽量使用局部变量。

1.5使用括号以防止二义性第二局部C语言编程标准2、可读性要求2.1可读性第一,效率第二。

2.2保持注释与代码完全一致。

2.3每个源程序文件,都有文件头说明,说明规格见标准。

2.4每个函数,都有函数头说明,说明规格见标准。

2.5主要变量定义或引用时,注释能反映其含义。

2.7定义全局变量要有相应说明。

2.8处理过程的每个阶段都有相关注释说明。

2.9在典型算法前都有注释。2.10在一行内只写一条语句,并采用空格、空行和移行保证清楚的视觉效果第二局部C语言编程标准2、可读性要求2.11利用缩进来显示程序的逻辑结构,缩进量一致定义为2个空格。

2.12循环、分支层次不要超过五层。

2.13注释可以与语句在同一行,也可以在上行。

2.14空行和空白字符也是一种特殊注释。

2.15一目了然的语句不加注释。

2.16注释的作用范围可以为:定义、引用、条件分支以及一段代码。

2.17注释行数〔不包括程序头和函数头说明部份〕应占总行数的1/5到1/3。第二局部C语言编程标准2、可读性要求例一:函数的可读性格式longGetAxisStatus(intiAxisCode,long*lStatus){longlStatus;longlResult;

SetAxisAddress(iAxisCode);lResult=GetStatus(lResult);returnlResult;}以上函数内容缩进2个空格,可读性强。第二局部C语言编程标准2、可读性要求例二:一行只有一个语句,可用空格来对齐错误的例子:iLength=32,iWidth=16;正确的例子:iLength=32;iWidth=16;第二局部C语言编程标准2、可读性要求例三:if(for、while等)语句的使用格式错误的例子:if(a==3){b=6;}if(a==3){b=6;}上例书写格式看起来没有层次感。第二局部C语言编程标准2、可读性要求例三:if(for、while等)语句的使用格式正确的例子:if(a==3){b=6;}内容缩进2个空格,层次清楚,可读性强。第二局部C语言编程标准2、可读性要求例四:switch语句的使用错误的例子:switch(code){case0:break;case1:break;default:break;}上例书写格式看起来没有层次感。第二局部C语言编程标准2、可读性要求例四:switch语句的使用正确的例子:switch(code){case0:break;case1:break;default:break;}内容缩进2个空格,层次清楚,可读性强。第二局部C语言编程标准3、结构化要求3.1禁止出现两条等价的支路。

3.2一般禁止GOTO语句。

3.3用IF语句来强调只执行两组语句中的一组。禁止ELSEGOTO。

3.4用CASE实现多路分支。

3.5防止从循环引出多个出口。

3.6一般函数只有一个出口。

3.7不使用条件赋值语句。

3.8防止不必要的分支。

3.9不要轻易用条件分支去替换逻辑表达式。第二局部C语言编程标准4、正确性与容错性要求4.1程序首先是正确,其次是优美

4.2无法证明你的程序没有错误,因此在编写完一段程序后,应先根据详细设计回头检查。

4.3改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。

4.4所有变量在调用前必须被初始化。

4.5对所有的用户输入,必须进行合法性检查。

4.6程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、权限设定等。

4.7单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。第二局部C语言编程标准5、可重用性要求5.1重复使用的完成相对独立功能的算法或代码应抽象为公共控件。

5.2公共控件应考虑OO思想,减少外界联系,考虑独立性或封装性。

5.3公共控件应建立使用模板。第二局部C语言编程标准6、注释6.1根据工程要求设定注释语言;6.2文件开始注释内容包括:公司名称、版权、作者名称、时间、模块用途、背景介绍等,复

杂的算法需要加上流程说明;6.3函数注释包括:输入、输出、函数描述、流

温馨提示

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

评论

0/150

提交评论