C#代码编写规范标准_第1页
C#代码编写规范标准_第2页
C#代码编写规范标准_第3页
C#代码编写规范标准_第4页
C#代码编写规范标准_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

C#代码编写规范标准C#代码编写规范标准C#代码编写规范标准资料仅供参考文件编号:2022年4月C#代码编写规范标准版本号:A修改号:1页次:1.0审核:批准:发布日期:代码编写规范(C#+数据库)TOC\o"1-4"\h\z\u1. 目的 32. 范围 33. 注释规范 3 概述 3 自建代码文件注释 3 模块(类)注释 4 类属性注释 5 方法注释 5 代码间注释 54 命名总体规则 55 命名规范 6 变量(Variable)命名 6 常量命名 8 类(Class)命名 8 接口(Interface)命名 8 方法(Method)命名 8 命名空间(NameSpace)命名 96 编码规则 9 错误检查规则 9 大括号规则 9 缩进规则 9 小括号规则 10 ifelse规则 10 比较规则 10 case规则 10 对齐规则 10 单语句规则 11 单一功能规则 11 简单功能规则 11 明确条件规则 11 选用false规则 11 独立赋值规则 11 定义常量规则 12 模块化规则 12 交流规则 127 编程准则 12变量使用 12 数据库操作 12 对象使用 12 模块设计原则 12 结构化要求 13 函数返回值原则 138 代码包规范 13

代码包的版本号 13 代码包的标识 149 代码的控制 14代码库/目录的建立 14代码归档 1510 输入控制校验规则 15登陆控制 15数据录入控制 1511 数据库命名规则 1511.1数据库表 1511.2表字段 1611.3索引 1611.4关联 1611.5储存过程 16附:变量命名规范 16附:2003控件命名规范 17附:2005控件命名规范 18目的为了统一公司软件开发的设计过程中关于代码编写时的编写规范和具体开发工作时的编程规范,保证代码的一致性,便于交流和维护,特制定此规范。范围本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。注释规范概述a)

注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。b)

每行注释的最大长度为100个字符。c)

将注释与注释分隔符用一个空格分开。d)

不允许给注释加外框。e)

编码的同时书写注释。f)

重要变量必须有注释。g)变量注释和变量在同一行,所有注释必须对齐,与变量分开至少两个“Tab”键。如:int

iLevel,iCount;

..treelevel

..countoftreeitems

stringstrSql;

ET编码规范中所有变量都用camel命名形式,而不是用数据类型和m_来作前缀。用有意义的,描述性的词语来命名变量

-别用缩写。用name,address,salary等代替nam,addr,sal

-别使用单个字母的变量象i,n,x等.使用index,temp等

用于循环迭代的变量例外:for(inti=0;i<count;i++){...}变量名中不使用下划线(_)。

-命名空间需按照标准的模式命名

在程序中,明确变量的作用范围是很有必要的,所以规定:- 全局变量命名:加前缀‘g’表示(global)。例如:stringgstrName;intgiID;- 局部变量命名:变量类型+变量名。例如:stringstrName;intiID;- 静态变量命名:加前缀‘s’表示(static)例如:staticstringsstrName;staticintsiID;只读变量命名:加前缀‘ro’表示(readonly)例如:readonlystringrostrName;readonlyintroiID;补充说明:针对异常捕获过程中的Exception变量命名,在没有冲突的情况下,统一命名为exp;如果有冲突的情况下,可以用“exp”+标志名称,如:expSql。Try{

Ø

即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如i或j。Ø

在变量名中使用互补对,如min/max、begin/end和open/close。Ø

不要使用原义数字或原义字符串,如For(i=1;i<=7;i++)。而是使用命名常数,如For(i=1;i<=NUM_DAYS_IN_WEEK;i++)以便于维护和理解。

常量命名常量名也应当有一定的意义,格式为NOUN或NOUN_VERB。常量名均为大写,字之间用下划线分隔。例:privateconstbool

WEB_ENABLEPAGECACHE_DEFAULT

=true;privateconstint

WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT=3600;privateconstbool

WEB_ENABLESSL_DEFAULT

=false;

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

使用Pascal,所有单词第一个字母大写。例如

IsSuperUser,包含ID的,ID全部大写,如CustomerID。e)

使用名词或名词短语命名类。f)

少用缩写。g)不要使用下划线字符(_)。例:

publicclassFileStreampublicclassButtonpublicclassString接口(Interface)命名

和类命名规范相同,唯一区别是

接口在名字前加上“I”前缀

例:

interfaceIDBCommand;

interfaceIButton;方法(Method)命名a)和类命名规范相同。b)方法名需能看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。命名空间(NameSpace)命名和类命名规范相同。编码规则错误检查规则a)编程中要考虑函数的各种执行情况,尽可能处理所有流程情况。b)检查所有的系统调用的错误信息,除非要忽略错误。c)将函数分两类:一类为与屏幕的显示无关,另一类与屏幕的显示有关。对于与屏幕显示无关的函数,函数通过返回值来报告错误。对于与屏幕显示有关的函数,函数要负责向用户发出警告,并进行错误处理。d)

错误处理代码一般放在函数末尾。e)对于通用的错误处理,可建立通用的错误处理函数,处理常见的通用的错误。大括号规则将大括号放置在关键词下方的同列处,例如:if(expression)

while(expression){

{

...

...}

}缩进规则使用一个“Tab”为每层次缩进。例如:functionfunc()

{

if(somethingbad)

{

if(anotherthingbad)

{

while(moreinput)

{

}

}

}

}小括号规则a)

不要把小括号和关键词(if、while等)紧贴在一起,要用空格隔开它们。如:if(expression){}b)

不要把小括号和函数名紧贴在一起。c)

除非必要,不要在Return返回语句中使用小括号。因为关键字不是函数,如果小括号紧贴着函数名和关键字,二者很容易被看成是一体的。ifelse规则如果你有用到elseif语句的话,通常最好有一个else块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else处,即使在else没有任何的动作。其格式为:if(条件1)

.case规则defaultcase总应该存在,如果不允许到达,则应该保证:若到达了就会触发一个错误。case的选择条件最好使用int或string类型。对齐规则变量的申明和初始化都应对齐。例如:

int

iCount;

int

i,j;

float

fIncome,fPay;

iCount

=0;

i

=1;

fIncome=;单语句规则除非这些语句有很密切的联系,否则每行只写一个语句。单一功能规则原则上,一个程序单元(函数、例程、方法)只完成一项功能。简单功能规则原则上,一个程序单元的代码应该限制在一页内(25~30行)。明确条件规则不要采用缺省值测试非零值。例如:使用“if

(0!=

f())”而不用“if

(f())”。选用false规则大部分函数在错误时返回false、0或NO之类的值,但在正确时返回值就不定了(不能用一个固定的TRUE、1或YES来代表),因此检测一个布尔值时应该用FALSE、0、NO之类的不等式来代替。例如:使用“if

(false!=

f())”而不用“if

(true==

f())”。独立赋值规则嵌入式赋值不利于理解程序,同时可能回造成意想不到的副作用,应尽量编写独立的赋值语句。例如:使用“a=b+c;

e=a+d;”而不用“e=(a=b+c)+d”。定义常量规则对于代码中引用的常量(尤其是数字),应该#define成一个大写的名字,在代码中引用名字而不直接引用值。模块化规则某一功能,如果重复实现一遍以上,即应考虑模块化,将它写成通用函数。并向小组成员发布。同时要尽可能利用其它人的现成模块。交流规则共享别人的工作成果,向别人提供自己的工作成果。在具体任务开发中,如果有其它的编码规则,则在相应的软件开发计划中予以明确定义。编程准则变量使用a)

不允许随意定义全局变量。b)一个变量只能有一个用途;变量的用途必须和变量的名称保持一致。c)所有变量都必须在类和函数最前面定义,并分类排列。数据库操作a)

查找数据库表或视图时,只能取出确实需要的那些字段。尽量不使用’select*from’的形式。b)

使用无关联子查询,而不要使用关联子查询。c)

清楚明白地使用列名,而不能使用列的序号。d)

用事务保证数据的完整性。对象使用a)

尽可能晚地创建对象,并且尽可能早地释放它。模块设计原则a)

不允许随意定义公用的函数和类。b)

函数功能单一,不允许一个函数实现两个及两个以上的功能。c)

不能在函数内部使用全局变量,如要使用全局变量,应转化为局部变量。d)

函数与函数之间只允许存在包含关系,而不允许存在交叉关系。即两者之间只存在单方向的调用与被调用,不存在双向的调用与被调用。结构化要求a)

禁止出现两条等价的支路。例如:if(a==2)

.

电话格式

(020)

邮政编码是六位b)

除CheckBox、RadioButton外,禁止在DataGrid内嵌入其他编辑控件,用以添加编辑数据数据库命名规则11.1数据库表根据表所属的子系统/模块,命名方式为:数据库表名=子系统/模块缩写+表含义其中子系统/模块的缩写首字母大写,表含义中每个单词的首字母为大写。例如:代码表可统一采用”code”为表的前缀,则:code_area表示地区代码表11.2表字段每个数据库中为每个表定义唯一的缩写,长度为3-8个字符,字段名=表缩写+“_”+字段含义。如地区代码表字段前缀为area,其相关字段名:area_id:地区代码ID主键area_name:地区代码名称11.3索引 索引名=idx+“_”+表缩写+相关字段/索引含义。11.4关联 关联指数据库表之间的外键关系关联名=rl+“_”+主表缩写+从表缩写。11.5储存过程 存储过程名=proc+“_”+存储过程含义。附:变量命名规范TypePrefixExampleArrayarrarrShoppingListBooleanblnblnIsPostBackBytebytbytPixelValueCharchrchrDelimiterDateTimedtmdtmStartDateDecimaldecdecAverageHeightDoubledbldblSizeofUniverseIntegerintintRowCounterIntiiCountLonglnglngBillGatesIncomeObjectobjobjReturnValueShortshrshrAverageSinglesngsngMaximumStringstrstrFirstName附:2003控件命名规范

WebControlsTypePrefixExampleAdRotatoradrtadrtTopAdButtonbtnbtnSubmitCalendarcalcalMettingDatesCheckBoxchkchkBlueCheckBoxListchklchklFavColorsCompareValidatorvalcvalcValidAgeCustomValidatorvalxvalxDBCheckDataGriddgdgTitlesDataListdlstdlstTitlesDropDownListdropdropCountriesHyperLinklnklnkDetailsImageimgimgAuntBettyImageButtonibtnibtnSubmitLabellbllblResultsLinkButtonlbtnlbtnSubmitListBoxlstlstCountriesPanelpnlpnlForm2PlaceHolderplhplhFormContentsRadioButtonradradFemaleRadioButtonListradlradlGenderRangeValidatorvalgvalgAgeRegularExpressionvalevaleEmail_ValidatorRepeaterrptrptQueryResultsRequiredFieldValidatorvalrvalrFirstNameTabletbltblCountryCodesTableCelltblctblcGermanyTableRowtblrtblrCountryTextBoxtxttxtFirstNameValidationSummaryvalsvalsFormErrorsXMLxmlcxmlcTransformResultsTypePrefixExampleConnectionconconNorthwindCommandcmdcmdReturnProductsParameterparaparaProductIDDataAdapterdaddadProductsDataReaderdrdrProductsDataSetdsdsNorthWindDataTabledtdtblProductDataRowdrowdrowRow98DataColumndcoldcolProductIDDataRelationdreldrelMasterDetailDataViewdavdavFilteredProducts附:2005控件命名规范StandardControl类型前缀示例AdrotatoradrtadrtTopAdBulletedListblstblstCityButtonbtnbtnSubmitCalendarcalcalMettingDatesCheckBoxchkchkBlueCheckBoxListchklchklFavColorsDropDownListdropdropCountriesFileUpLoadfupfupImageHiddenFieldhfldhfldNameHyperLinkhlkhlkDetailsImageimgimgAuntBettyImageButtonibtnibtnSubmitImageMapimapimapSiteLabellbllblResultsLinkButtonlbtnlbtnSubmitListBoxlstlstCountriesLiteralltlltlTitleLocalizeloclocChinaMultiViewmvwmvwForm1PanelpnlpnlForm2PlaceHolderplhplhFormContentsRadioButtonradradFemaleRadioButtonListradlradlGenderSubStitutionsubssubsTimeTabletbltblCountryCodesTextBoxtxttxtFirstNameViewvwvwCityWizardwizwizRegisterXmlxmlxmlBooksDataControl类型前缀示例AccessDataSourceadsadsPubsDataListdl

温馨提示

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

评论

0/150

提交评论