




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#开发规范版本更新时间修改人备注V1.02016Wp目录\o"CurrentDocument"术语 3\o"CurrentDocument"文件命名 3\o"CurrentDocument"代码外观 4\o"CurrentDocument"程序注释 5\o"CurrentDocument"对象声明 6\o"CurrentDocument"代码规范 7命名规范 7语句规范 9\o"CurrentDocument"开发建议 12术语Pascal大小写:将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal大小写。例如:BackColorCamel大小写:标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backColor文件命名文件名遵从Pascal命名法,无特殊情况,扩展名小写。文件开始包含类似以下注释说明/*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**1*/√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛//文件名://文件功能描述://创建人://创建时间://描述://修改人://修改时间://修改描述://*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**1*///√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛/文件功能描述着重于描述文件功能与说明,详情应在类的注释中描述。一天内有多个修改只需做做一个修改标识,在所有的代码修改处加上修改标识的注释。代码外观列宽代码列宽控制在100字符左右。代码换行,换行后的代码应该缩进一个 Tab。换行当表达式超出或即将超出规定的列宽,遵循以下规则进行换行在逗号后换行。在操作符前换行。规则1优先于规则2。当以上规则会导致代码混乱的时候自己采取更灵活的换行规则。缩进缩进应该是每行一个 Tab(4个空格),不要在代码中使用 TabOOO空行在以下情况下使用两个空行接口和类的定义之间。枚举和类的定义之间。类与类的定义之间。在以下情况下使用一个空行方法与方法、属性与属性之间。方法中变量声明与语句之间。方法与方法之间。方法中不同的逻辑块之间。方法中的返回语句与其他的语句之间。属性与方法、属性与字段、方法与字段之间。注释与它注释的语句间无空行,但与其他的语句空一行。空格在以下情况中要使用到空格关键字和左括号 (应该用空格隔开。在方法名和左括号 (之间不要使用空格。多个参数用逗号隔开,每个逗号后都应加一个空格。除了.之外,所有的二元操作符都应用空格与它们的操作数隔开。一元操作符、 ++及--与操作数间不需要空格。语句中的表达式之间用空格隔开。如 for(expr1;expr2;expr3)括号左括号 (不要紧靠关键字,中间用一个空格隔开。左括号 (与方法名之间不要添加任何空格。没有必要的话不要在返回语句中使用 ()。花括号左花括号 {放于关键字或方法名的下一行并与之对齐。左花括号 {要与相应的右花括号 }对齐。通常情况下左花括号 {单独成行,不与任何语句并列一行。if、while、do、for语句后一定要使用 {},即使{}号中为空或只有一条语句。右花括号 }后加一个注释以便于方便的找到与之相应的 {。块语句将大的复杂代码节分为较小的、易于理解的模块。当一行被分为几行时,将运算符放在行的末尾,标识行是不完整的。在代码中垂直对齐左括号和右括号。if(x==0){}不允许以下情况:if(x==0){}if(x==0){xxx;}程序注释注释原则注释应该是解释为什么和做什么,而不是介绍是什么。修改代码时,总是使代码周围的注释保持最新。变量声明时,使用行尾注释是合适的;其他情况下,使用单行注释。避免杂乱的注释,如一整行星号。而是应该使用空白将注释同代码分开。在部署发布之前,移除所有临时或无关的注释,避免维护工作中产生混乱。如果需要用注释来解释复杂的代码节,先检查代码是否应该重写。在编写注释时使用完整的句子。注释应该阐明代码,而不应该增加多义性。避免多余的或不适当的注释。注释代码中不十分明显的任何内容。为了防止问题反复出现,对错误和解决方法总是使用注释。对由循环和逻辑分支组成的代码使用注释。使用具有一致的风格和语言来构造注释。用空白将注释同注释分隔符分开。新增代码行的前后要有注释行说明, 对具体格式不作要求, 但必须包含作者,新增目的。在新增代码的最后必须加上结束标志;善于运用 #region,#endregion。单行注释用于方法内的代码注释。如变量的声明、代码或代码段的解释。示例://注释语句privateintnumber;方法内变量的声明或花括号后的注释,示例://alwaystrueif(1==1){statement;}//alwaystrue多行注释:该类注释用于说明一段代码的逻辑、运算步骤、注意事项等需要详细说明的内容。/*statementdescription*statementdescription新增时间,*statementdescription*/statement;文档注释.Net预定义Xml标签来标记对象说明,在声明接口、口、方法、属性、字段都应该使用该类注释。///<summary>///方法描述///</summary>///<paramname=key>参数说明<∕param>///<returns>返回值说明 <∕returns>publicstaticvoidMethod(stringkey){return;}类注释模块开始尽量以以下形式书写模块注释:/*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**1*/√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛//类名://功能描述://创建人://创建时间://描述://修改人://修改时间://修改描述://*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**1*// /√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛√J⅛/注意:类的修改应该在注释中添加修改记录,且记录累加。属性注释在类的属性必须以以下格式编写属性注释:///<summary>///属性说明///</summary>方法注释在类的方法声明前必须以以下格式编写注释:///</summary>///函数的作用///<paramname=<参数名称>><0000></param>///<returns><返回值的说明,该说明必须明确说明返回的值代表什么含义</returns>///<exception>异常类型、异常结果说明□为什么产生此异常) </exception>对象声明>变量声明建议一行只作一个声明。示例:intlevel;//推荐intsize;//推荐intx,y;//不推荐在变量声明时就对其做初始化。变量声明置于块的开始处,不要总是在第一次使用它们的地方做声明。例外:for(inti=0;i<len;i++){}避免不同层次间的变量重名类、接口声明在方法名与其后的左括号间没有任何空格。左花括号 {出现在声明的下行并与之对齐,单独成行。方法间用一个空行隔开。字段声明不要使用是public或protected的字段。如果需要将字段公开,请使用属性代码规范命名规范命名由字母、数字和组成。命名是为了帮助人们阅读。避免使用系统保留字。应选择正确的名称,能够表明功能或定义目的。
在编程上通过命名可以将各项明确的区分开来。
避免容易被主观解释的难懂的名称,避免歧义。
只要合适,在变量名的末尾或开头加计算限定符。
在一组相关变量的命名中使用互补对,如布尔变量名应该包含 Is,这意味着在命名状态变量时,避免使用诸如单纯
不要使用匈牙利语表示法。min/max、begin/end和open/close。Yes/No或True/False值。Flag或Status的术语。大小写规则大写标识符中的首字母大写,仅对于由两个或者更少字母组成的标识符使用该约定。示例:System.IOSystem.Web.UI下表汇总了大写规则,并提供了不同类型的标识符的示例。标识 大小 示 J PascalAppDomain枚举类 PascalErrorLeVel枚举值 PascalFatalError事 PascalValueChange异常 PascalWebEXCeption总是ExceptionOOOOO静态字 PascalRedValue接 PascalIDiSpoSable总是IOOOOOOO PascalToString命名空间PascalSystem.DrawingOO PascalBackColor公共实例字段 PascalRedValUeOO优于使用公共0000。 受保护的实例字段 CamelredValUeOO优于使用受保护00000。 0000000CamelredValUe参数CameltypeNameOO内的变量 CamelbackColor缩写不要将缩写或缩略形式用作标识符名称的组成部分。不要使用计算机领域中未被普遍接受的缩写。在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如 UI或OLAP。使用缩写时,对于超过两个字符长度的缩写请使用 Pascal大小写或Camel大小写,但应当大写仅有两个字符的缩写,如 System.IO而不是 System.Io。不要在标识符或参数名称中使用缩写。命名空间命名空间使用公司名 .项目名称,后续可添加按技术名称和功能、模块名称。命名空间和类不能重名。类用名词或名词短语命名类。使用全称避免缩写,除非缩写已是一种公认的约定,如 URL、HTML不要使用类型前缀。不要使用下划线字符 (_)。接口接口命名与类相同,唯一区别是给接口名称加上大写字母 I前缀。枚举(Enum)不要在EnUm类型名称上使用 EnUm后缀,可根据使用场景添加后缀限定。对大多数EnUm类型使用单数名称,但是对作为位域的 EnUm类型使用复数名称。总是将FlagsAttribUte添加到位域EnumOOO参数使用描述性词语定义参数名称。使用描述参数的含义的名称,而不要使用描述参数的类型的名称。方法使用动词或动词短语命名方法。返回值是BoolOOOOOIs开头;属性使用名词或名词短语命名属性。返回值是BoolOOOOOIs开头;考虑用与属性的基础类型相同的名称创建属性。事件使用动词、动名词描述事件名称。对委托定义使用 Event后缀。对事件定义使用 EventHandler后缀。用EventArgs后缀命名事件参数类。不要在非动作事件声明上使用 on前缀。常量(const)所有单词大写,多个单词之间用下划线字符字段禁止使用public00000private、protected使用Camel大小写。属性的私有变量添加下划线字符 (_)前缀静态字段使用名词、名词短语或者名词的缩写命名静态字段。尽可能使用静态属性而不是公共静态字段。集合集合的命名建议用复数形式。措词避免使用与常用的 .NET框架命名空间类名称冲突。OOOOO C#关键字冲突的标识符。语句规范单行语句每行最多包含一个语句。如a++;//推荐b--;//推荐a++;b--;//不推荐复合语句复合语句是指类似“父语句 {子语句 ;子语句子语句要缩进。左花括号{在复合语句父语句的下一行并与之对齐,单独成行。即使只有一条子语句要不要省略花括号 {}。while(d+=s++){n++;}(_)隔开。;}”的语句,要求:如表达式避免在表达式中用赋值语句避免对浮点类型做等于或不等于判断类型转换尽量避免类型转换。如果不得不进行类型转换,尽量用显式方式。return语句return语句中不使用括号,除非它能使返回值更加清晰。如return;returnmyDisk.size();return(size?size:defaultSize);if、if-else、ifelse-if语句if(condition){statements;}if(condition){statements;}else{statements;}if(condition){statements;}elseif(condition){statements;}else{statements;}for、foreach语句for(initialization;condition;update){statements;}foreach(objectobjinarray){statements;}注意:在循环过程中不要修改循环计数器。禁止出现空循环。while语句while(condition){statements;}do-while语句do{statements;}while(condition);switch-case语句switch(condition){statements;break;statements;break;default:statements;break;}注意:语句switchOOOOcase00000语句switchOOcase00000000为所有switch0000default分支。OOOOOcase00000break;00000try-catch语句try{statements;}catch(ExceptionClasse){statements;}finally{statements;}using块00using(object){statements;}goto语句禁止使用goto00开发建议程序充分测试绝对是有必要的发布时生成Release版本,Web站点禁用调试模式类内函数、属性和变量的调用在前面加上 this.静态元素 (元素包括变量和方法 )的调用,一定要加类名避免阅读混乱。引用类型转换:使用 as运算符,优点是转换不成功时,返回值为 null,不抛出异常。避免在循环中创建对象,在需要逻辑分支中创建对象,使用常量避免创建对象避免循环次数为1的循环。使用变量保存中间数据,而不是每次都计算,避免不必要的损失性能。在需要大量字符串连接的时候,使用 StringBUilder类。如果能计算出字符串长度的话, 则按这个长度来设定 StringBUilder类Buffer的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毛线棒针编织课件
- 2025年经济师(中级)考试真题及答案
- 车间安全知识培训课件范本图片
- 国家开放大学电大(行政组织学)期末试题题库及答案
- 2025年官方兽医网牧运通考试题库含答案详解(黄金题型)
- 特色食品知识培训心得体会
- 春夜喜雨教学课件下载
- 车辆汛期课件
- 教学目标课件设计图
- 橡胶胶料耐静态撕裂工艺考核试卷及答案
- 高速公路收费员安全教育培训
- 2025年海南省高考物理试卷(含答案解析)
- 甘肃农业职业技术学院招聘事业编制笔试真题2024
- GB/T 45817-2025消费品质量分级陶瓷砖
- 2025-2030中国超级电容器电解液行业发展状况与需求前景预测报告
- 羽毛球馆创业计划书范文
- 种子企业质量管理制度
- 医学影像技术操作规范阅读题集
- 高中生的抑郁现状调查及危机干预对策
- 口腔工艺管理课件
- 固定矫治器粘接的护理流程
评论
0/150
提交评论