您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言编程及命名规范
C语言程序设计授课专业:软件技术专业前言规范的重要性–今天人们越来越明白软件设计更多地是一种工程,而不是一种个人艺术。由于大型产品的开发通常由很多的人协同作战,如果不统一编程规范,最终合到一起的程序,其可读性将较差,这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不规范的代码隐含错误的可能性也比较大。前言规范的重要性•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控制程序,项目名可命为TWIN–2、文件名•基于工程名,开头3个字母应表明与哪一个工程相关。•后面的字母应能够区别不同的功能。•严格区分大小写。•长度不限于8.3格式,建议不多于30个字符。•若文件用于定义和实现函数(类),建议文件名与函数(类)名保持一致。第一部分C语言命名规范–2、文件名•例如:•TWIN项目的文件名的前三个字符为TW_,•TW_ToolPosmeter.cpp•TW_MachParameter.cpp•TW_SpindlePos.cpp–等等第一部分C语言命名规范–3、函数名•参照项目具体的命名规范。•推荐使用动宾结构。函数名应清晰反映函数的功能、用途。•函数名最长不得超过30个字符。•函数名是复合词的,每个单词采用第一个字母大写,其它字母小写方式。•全局函数必须以小写前缀g开头。例如:longOpenControl(void);第一部分C语言命名规范–4、变量名•原则上,变量名的命名遵从匈牙利记法。即:前缀+类型+变量名•其中:•前缀是可选项,以小写字母表示;•基本类型是必选项,以小写字母表示;•变量名是必选项,可多个单词(或缩写)合在一起,每个单词首字母大写。•变量名最长不得超过20个字符。第一部分C语言命名规范–4、变量名•前缀列表如下:•前缀意义举例•ms_类的静态成员变量ms_ListFunc•m_类成员变量或m_ListBox,•模块级变量m_Size•s_静态全局变量s_Count•g_普通全局变量g_MyVar第一部分C语言命名规范–4、变量名•基本类型列表如下:•基本类型意义举例•b布尔bIsOK•by字节byNum•c字符cMyChar•i整数iTestNumber•u无符号整数uCount•ul无符号长整数ulTime•w字wPara第一部分C语言命名规范–4、变量名•基本类型意义举例•dw双字dwPara•l长型lPara•f浮点数fTotal•d长浮点数dData•h句柄hWnd•p指针pTheWord•lp长指针lpCmd•a数组aErr第一部分C语言命名规范–4、变量名•基本类型意义举例•sString字符串sTemp•szNULL结束的字符串szTrees[]•enm枚举型enmDays•xyx,y坐标xyPos第一部分C语言命名规范–5、类名•类名反映具体含义,以清晰表达类的用途和功能为原则。•接口必须以大写I开头,代表Interface。•当名称由多个单词构成时,每一个单词的第一个字母必须大写。第一部分C语言命名规范–6、宏和常量的命名•宏和常量的命名规则:单词的字母全部大写,各单词之间可用下划线隔开。命名举例:•例如:•#defineMAXNUMBER100•#defineMAX_SLOT_NUM8•#defineEI_ENCR_INFO0x07•#defineDO(do){iRet=do;if(iRet)returniRet;}第一部分C语言命名规范–7、结构和结构成员的命名•结构名各单词的字母均为大写,单词间可用下划线连接。可用或不用typedef,但是要保持一致,不能有的结构用typedef,有的又不用。•结构变量加小写前缀“t。•typedefstructPOINT•{•intx;•inty;•}tPOINT;•结构成员的命名同变量的命名规则。第一部分C语言命名规范–8、枚举和枚举成员的命名•枚举名各单词的字母均为大写,单词间可用下划线隔开。•枚举成员的命名规则:单词的字母全部大写,各单词之间可用下划线隔开;要求各成员的第一个单词相同。•枚举变量加小写前缀“e“.•命名举例:•typedefenum_KFILE_OPEN_MODE•{•FILE_OPEN_READONLY=0,•FILE_OPEN_READWRITE=1,•FILE_CREATE_ALWAY=3•}eKFILE_OPEN_MODE;第一部分C语言命名规范–9、联合名•联合名各单词的字母均为大写,单词间可用下划线连接。•联合变量名加小写前缀“j“,其成员按变量命名。例:•typedefunion_VARIANT•{•charcVal;•intiVal;•longlVal;•floatfVal;•}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程序与环境或状态发生关系时,必须主动去处理发生的意外事件
本文标题:C语言编程及命名规范
链接地址:https://www.777doc.com/doc-4155282 .html