C代码编写规范方案.docx

上传人:李司机 文档编号:4960504 上传时间:2023-05-26 格式:DOCX 页数:24 大小:40.12KB
返回 下载 相关 举报
C代码编写规范方案.docx_第1页
第1页 / 共24页
C代码编写规范方案.docx_第2页
第2页 / 共24页
C代码编写规范方案.docx_第3页
第3页 / 共24页
C代码编写规范方案.docx_第4页
第4页 / 共24页
C代码编写规范方案.docx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《C代码编写规范方案.docx》由会员分享,可在线阅读,更多相关《C代码编写规范方案.docx(24页珍藏版)》请在三一办公上搜索。

1、C#代码编写规X目录目录1目的21目的32适应X围33术语及缩略语44规X内容44.1 命名总体规则44.2 命名规X4421姬命名4422常量命名6423类(ClasS)命名6424口(Interfite)命名7425方法(Method)命名74.2.6命名空间(NameSPaCe)命名7427属性(Property)命名74.3 注释规X743.1 M743.2 2自建代码文件注释843.3 模块(类)注释9434类属性注释9435方法注释1043.4 6代码间注释104.4 编码规则IO4.4.1 错误检查规则104.4.2 括号规则U4.4.3 括号规则114.4.4 缩进规则114.

2、4.5 齐规则11446比较规则114.4.7 Cee规则12448IfElSe规则124.4.8 语句规则124.4.10 单一功能准则124.4.11 简单功能准则124.4.12 明确条件规则124.4.13 选用FalSe规则134.4.14 独立赋值规则134.4.15 定义常量规则134.4.16 模块化规则134.4.17 交流规则134.5 编程准则14451变量使用14452数据库操作141.1.1 象使刖41.1.4 模块设计原则14455结构化要求141.1.6 函数返回值原则154.6 代码包规X15461代码包的版本号15462代码包的标识164.7 代码控制174.

3、7.1 代码库/目录的建立174.7.2 代码归档17附件1:数据类型缩写表17附件2:控件名缩写表18a、.NET控件18b、html控件19c、ADO.NET控件201目的a)为了统一公司软件开辟设计过程的编程规X;b)使开辟人员能方便的理解每一个目录、变量、控件、类、方法的意义;c)为了保证编写出的程序都符合相同的规X,保证一致性、统一性而建立的程序编码规X;d)编码规X和约定必须能明显改善代码可读性,并有助于代码管理;2适应X本规X合用于企业所有基于.NET平台的软件开辟人员,作用于软件项目开发的代码编写阶段和后期维护阶段。3术语及缩略语4规X内容4.1命名总体规则a)名字应该能够标识

4、事物的特性。b)名字一律使用英文单词,而不能为拼音。c)名字尽量不使用缩写,除非它是众所周知的。d)名字可以有两个或者三个单词组成,但不应多于三个,控制在3至30个字母以内。e)在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如:IsSuperUsero0名字尽量使用前缀而不是后缀。g)名字中的单词尽量使用名词,如有动词,也尽量放在后面。例如:FunctionUserDeIete(而不是FiinctionDeleteUser)o42命名规X421变量命名1、程叙文件(*.cs)中的变量命名程序中变量名称=变量的前缀+代表变量含意的英文单词或者单词缩写。类模块级的变量请用“m_”+数

5、据类型缩写作为前缀(其中,m为“module”缩写,数据类型缩写见附件中的数据类型缩写表)。PubliccIassHello(privatestringm_strName;PrivateDiitaTablem_dtblTable;)类的属性所对应的变量,采用属性名前加“mJ+类型缩写前缀的形式PublicclassHello(privatestringm_strName;PrivateEXiUiTablem-dtbable;publicstringName(妒returnm_strName;)过程级的变量使用类型缩写前缀voidSay()(StringstrSayWord;)过程的参数使用*_

6、”+类型缩写作为前缀(其中,p为“parameter”缩写)voidSay(StringpStrSayWord)(StringstrSayWord;)补充说明:针对异常捕获过程中的EXCePtiOn变量命名,在没有冲突的情况下,统一命名为ex;如果有冲突的情况下,可以用“ex”+标志名称,如:exSqL叮(代码Catch(Exceptionex)/代码)补充:如果捕获异常不需要作任何处理,则不需要定义EXCePtion实例。例:叮(代码)catch()鉴于大多数名称都是通过连接若干单词构造的,请使用大小写混合的格式以简化它们的阅读。每一个单词的第一个字母都是大写.即使对于可能仅浮现在几个代码行

7、中的生存期很短的变量,仍然使用故意义的名称。仅对于短循环索引使用单字母变量名,如i或者j。在变量名中使用互补对,如minmaxbegin/end和OPen/close。不要使用原义数字或者原义字符串,如For(i=l;i=7;i+)o而是使用命名常数,如For(i=l;i=NUM_DAYSJN_WEEK;i+)以便于维护和理解。2、控件命名控件命名二控件缩写前缀+“_”+名称;如:DataGridcRserList或者dgUserlist422常量常量名也应当有一定的意义,格式为NoUN或者Ne)UN_VERB。常量名均为大写,字之间用下划线分隔。例:privateconstboolWEB_E

8、NABLEPAGECACHE.DEFAULT=true;PrivateconstintWEB_PAGECACHEEXPIRESINSECONDS.DEFAULT=3600;PrivaieconsiboolWEB_ENABLESSL_DEFAULT=false;注:变量名和常量名最多可以包含255个字符,但是,超过25到30个字符的名称比较笨拙。此外,要想取一个有实际意义的名称,清晰地表达变量或者常量的用途,25或者30个字符应当足够了。423类(ClasS)命名a)名字应该能够标识事物的特性。b)名字尽量不使用缩写,除非它是众所周知的。C)名字可以有两个或者三个单词组成,但通常不应多于三个。d

9、)在名字中,所有单词第一个字母大写。例如ISSUPerUser,包含ID的,ID可以全部大写,如CUStomerlDoe)使用名词或者名词短语命名类。少用缩写。g)不要使用下划线字符例:PiiblicclassHleStreamPublicclassButtonPubliccIassString424接口(Interfece)命名和类命名规X相同,惟一区别是接口在名字前加之T前缀。例:interface!Map;或者interfaceIMapDocument:425方法(Method)命名和类命名规X相同;4.2.6命名空间(NameSpace)命名和类命名规X相同;427属性(PrcPert

10、y)命名和类命名规X相同;43注释规X431a)注释要求英文及英文的标点符号。b)注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。C)每行注释的最大长度为100个字符。d)将注释与注释分隔符用一个空格分开。e)不允许给注释加外框。f)编码的同时书写注释。g)重要变量必须有注释。h)变量注释和变量在同一行,所有注释必须对齐,与变量分开至少四个“空格”键。如:in(rn_jLevdnLjCount;nLjLevd.re*vdmJCount.untoftreeitemsstringm_strSql;/SQLi)典型算法必须有注释。j)在循环和逻辑分支地方的上行必须就近书写注释。

11、k)程序段或者语句的注释在程序段或者语句的上一行I)在代码交付之前,必须删掉暂时的或者无关的注释。m)为便于阅读代码,每行代码的长度应少于100个字符。4.32自建代码文件注释对于自己创建的代码文件(如函数、脚本),在文件开头,普通编写如下注释:泮*FiIeName:Copyright(C)2004-xxxx*公司技术开辟部WriterCreateDate:Revrriter:RewriteDate:ImpactMainContent(FunctionNamePararneters、returns)433模那类渔释模块开始必须以以下形式书写模块注释:/ModuleID:模块编号,可以引用系统设

12、计中的模块编号/Depiction:/Author:作者中文名/CreateDate:V模块创建日期,格式:YYYY-MM-DD/如果模块只进行部份少量代码的修改时,则每次修改须添加以下注释:/RewriterDate:Start1:/*原代码内容*/Endl:将原代码内容注释掉,然后添加新代码使用以下注释:/AddedbyAdddate:添加日期,格式:YYYY-MM-DDStart2:/End2:如果模块输入输出参数或者功能结构有较大修改,则每次修改必须添加以下注释:/LogID:/depiction:对此修改的描述/Writer:修改者中文名/RewriteDate:模块修改日期,格式:

13、YYYY-MM-DDZ434类属性注释在类的属性必须以以下格式编写属性注释:/描述信息/435鹿注释在类的方法声明前必须以以下格式编写注释III/depiction:对该方法的说明III/paramname=III/对方法返回值的说明,该说明必须明确说明返回的值代表什么含义/Writer:作者中文名/CreateDate:43.6代码间注释代码间注释分为单行注释和多行注释:单行注释/*多行注释1多行注释2多行注释3*/代码中遇到语句块时必须添加注释(ifbr,fbgch,),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。44编码规则4.4.1错误检查规则a)编程中要考虑函数的

14、各种执行情况,尽可能处理所有流程情况。b)检查所有的系统调用的错误信息,除非要忽略错误。C)将函数分两类:一类为与屏幕的显示无关,另一类与屏幕的显示有关。对于与屏幕显示无关的函数,函数通过返回值来报告错误。对于与屏幕显示有关的函数,函数要负责向用户发出警告,并进行错误处理。d)错误处理代码普通放在函数末尾。e)对于通用的错误处理,可建立通用的错误处理函数,处理常见的通用的错误。4.42 大括号规则将大括号放置在关键词下方的同列处,例如:4.43 小括号规则a)不要把小括号和关键词(if、WhiIe等)紧贴在一起,要用空格隔开它们。b)不要把小括号和函数名紧贴在一起。C)除非必要,不要在RetU

15、rn返回语句中使用小括号。因为关键字不是函数,如果小括号紧贴着函数名和关键字,二者很容易被看成是一体的。444缩进规则使用一个“Tab”为每层次缩进。例如:445对齐规则变量的申明和初始化都应对齐。例如:intm-iCount;intij;floatm_flnejn_flPay;mJCount=0;i=l;m_flne=0.3;4.4.6比较规则总是将恒量放在等号/不等号的左边。一个原因是假如你在等式中漏了一个等号,语法检查器会为你报错。第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它。例如:if(6=SennNum).447Ce规则defultcase总应该存在,如果不允许到达,则

16、应该保证:若到达了就会触发一个错误。QSe的选择条件最好使用int或者String类型。448IfEiSe规贝!)如果你实用到elseif语句的话,通常最好有一个else块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else处,即使在else没有任何的动作。其格式为:if(条件1)/注释(elseif(条件2)/注释()else/注释()449吾句规则除非这些语句有很密切的联系,否则每行只写一个语句。4410单一功能准则原则上,一个程序单元(函数、例程、方法)只完成一项功能。4411简单功能准则原则上,一个程序单元的代码应该限制在一页内(2530行)。4.4.12明确条件规则不要

17、采用缺省值测试非零值。例如:使用“if(O!=fO)”而不用“iRfO)”。4413选用FalSe规则大部份函数在错误时返回FALSE、0或者NO之类的值,但在正确时返回值就不定了(不能用一个固定的TRUE、1或者YES来代表),因此检测一个布尔值时应该fflFALSE、0、Ne)之类的不等式来代替。例如:使用Uif(FalSe!=)”而不用t4jf(TRUE=)o4414独立赋值规则嵌入式赋值不利于理解程序,同时可能会造成意想不到的副作用,应尽量编写独立的赋值语句。例如:使用“a=b+c;e=a+d;而不用“e=(a=b+c)+c4.4.15定义常量规则对于代码中引用的常量(特别是数字),应

18、该define成一个大写的名字,在代码中引用名字而不直接引用值4416模块化规贝!!某一功能,如果重复实现一遍以上,即应考虑模块化,将它写成通用函数。并向小组成员发布。同时要尽可能利用其它人的现成模块。4417交流规则共享别人的工作成果,向别人提供自己的工作成果。在具体任务开辟中,如果有其它的编码规则,则在相应的软件开辟计划中予以明确定义。4.5编程准则451姬颂a)不允许随意定义全局变量。b)一个变量只能有一个用途;变量的用途必须和变量的名称保持一致。C)所有变量都必须在类和函数最前面定义,并分类罗列。452数据库操作a)查找数据库表或者视图时,只能取出确实需要的那些字段。b)使用无关联子查

19、询,而不要使用关联子查询。C)清晰明白地使用列名,而不能使用列的序号。d)用事务保证数据的完整性。453对象使用尽可能晚地创建对象,并且尽可能早地释放它。454模块设计原贝!a)不允许随意定义公用的函数和类。b)函数功能单一,不允许一个函数实现两个及两个以上的功能。C)不能在函数内部使用全局变量,如要使用全局变量,应转化为局部变量。d)函数与函数之间只允许存在包含关系,而不允许存在交叉关系。即两者之间只存在单方向的调用与被调用,不存在双向的调用与被调用。455结构化要求a)禁止浮现两条等价的支路。例如:iRa=2)elseifta=3)/elseif(a=2)/else/b)避免使用GOTO语

20、句c)用IF语句来强调只执行两组语句中的一组。禁止ELSEGOTO和ELSERETURNod)用CASE实现多路分支e)避免从循环引出多个出口。f)函数惟独一个出口。g)不使用条件赋值语句。h)避免不必要的分支。i)不要轻易用条件分支去替换逻辑表达式4.5.6函数返回值原则避免使用结构体等复杂类型使用bool类型:该函数只需要获得成功或者失败的返回信息时候使用im类型:错误代码用负数表示,成功返回04.6 代码包规X本项目中,每一个任务在完成一个稳定的版本后,都应打包并且归档。4.6.1 代码包的版本号项目中,代码包的版本号由圆点隔开的两个数字组成,第一个数字表示发行号,第二个数字表示该版的修

21、改号。具体用法如下:D当代码包初版时,版本号为V1.00;2)当代码包被局部修改或者bug修正时,发行号不变,修改号第二个数字增1。例如,对初版代码包作了第一次修订,则版本号为V1.01;3)当代码包在原有的基础上增加部份功能,发行号不变,修改号第一个数字增L例如,对V1.12版的基础上增加部份功能,则新版本号为V1.20;4)当代码包有重要修改或者局部修订积累较多导致代码包发生全局变化时,发行号增1。例如,在V1.15版的基础上作了一次全面修改,则新版本号为V200o462代购的本项目所产生的代码包都有惟一、特定的编码,其构成如下:S-项目标识-代码包类型-版本号/序号其中:1)S:本项目的

22、标识,表明本项目是“XXXX”。2)项目标识:简要标识本项目,此标识合用于整个项目的文档。3)代码包类型:取自以下表的两位字母编码。4)版本号:本代码包的版本号。5)序号:四位数字编码,指明该代码包在项目代码库的总序号。例如:一个Windows下RAR源码的压缩代码包命名为:S-XXXX-WS-V1.02/0001项目的代码包分类表类型编码注释RAR包(web)源码文件WS源代码文件包编译文件WB编译文件包安装文件Wl安装文件包源码代码+安装文件WA源代码和安装文件包项目中所有代码包的标识清单将在项目开辟计划中予以具体定义。4.7 代码控制471代码库/目录的建立项目负责人在VSS中建立项目的

23、文档库目录,即为“Software”目录,以便快速查询。472代码归档所有代码在完成一个稳定的版本后,项目负责人都应打包后,存放于VSS中该目的“Software”目录下,并且依据代码包的命名规X为代码包分配一个唯一位称。附件1:数据类型缩写表数据类型缩写stringstrinticharchrsbytesbbytebtuintuiIonglulongulfloatfdoubledblbdecimaldec附注:数据库服务器命名规X,控件名缩写+控件作用单词的全称,如:btnNext,txtPassword(密码文本框),txtRPassword(密码确认文本框),单词的第一个字母必须大写如果

24、有多个单词,则为控件缩写+控件作用的第一个单词+第二个单词的全称,每一个单词名的第一个字母必须大写附件2:控件名缩写表a、.NET控件Web控件名缩写AdRotatoraitButtonb(nCcdendarcdCheckBoxchkCheckBoxListchklPareValidatorcpvCustomValidatorCtVDataGriddgDataListdlDropDownListddlHyperLinkhlImageimgImageButtonIbtnLabellabLinkButtonIbtnListBoxlstPanelplPlaceHolderphRadioButtonr

25、bRadioButtonListrblRangeValidatorrvRegularExpressionValidatorrevRepeaterrpRequiredFieldValidatorrfvTabletbTableCelltcTableRowtrTextBoxtxtXMLXMLb、html控件html控件名缩写HlmlAnchorhahHtmlButtonhbtnHtmlFormhfbrmHtmlGenericControlhgcHtmIImagehimgHtmlInputButton(按钮)htxtHtmlInputButton(重置)hrbtnHtmnnPUtBUtton(提交)h

26、cbtnHtmllnpulCheckBoxhickHtmlInputFilehifileHtmlInputHiddenhihiddenHtmlInputImagehiimgHtmlInputRadioButtonhirbHtnilInputText(密码)hpwdHtmnnPUtText(文本)hitxtHtmlSelecthsltHtmlTablehtabHtmlTableCellhtcHtmlTableRowhtrHtmlTextAreahtxtac、ADO.NET控件类型前缀示例ConnectionconConNorthwindmandcmdCmdRetumProductsParameterparmparmProductIDDataAdaPterdaddadPductsDataReaderdtrdtrPmductsDataSetdstdstNorthWindDataTabledtbldtblProductDataRowdrowdrowRow98DataColumndcoldcolProductIDDataRelationdreldrelMasterDetailDataViewdvwdvwFilteredProducts

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号