DotNet编码规范
- 格式:doc
- 大小:200.00 KB
- 文档页数:19
软件开发中的IEC编程规范在软件开发中,IEC编程规范(International Electrotechnical Commission,国际电工委员会)是一种被广泛采用的编程规范,它的目的是提高软件代码的质量和可维护性。
IEC编程规范规定了一些约定和规则,帮助软件开发人员编写出更加规范、可读性更好、可靠性更高的代码。
本文将深入探讨软件开发中的IEC编程规范。
一、编码风格与规范编码风格与规范是IEC编程规范的重要部分,其旨在确保软件代码的整洁、可读性强,使得程序员可以更快地理解代码并迅速进行修改。
以下是编码风格与规范的主要内容:1.文件命名规范:对于每一个代码文件,文件名应该能够反映出文件的内容和用途,命名应该使用小写字母,不允许使用特殊字符。
2.变量命名规范:变量名应该清晰明确,能够反映出变量的用途,不应使用过于简短和不明确的变量名。
3.代码缩进规范:代码应该缩进以保证布局的整洁,一般情况下采用四个空格或一个制表符。
4.代码注释规范:注释应该详细描述函数、变量和代码块的作用,以便其他程序员可以理解更好地代码。
5.函数声明规范:每个函数应该有一个清晰的函数声明,包括函数名、传入参数、返回值和函数作用的简要描述。
6.代码错误处理规范:应该及时提示和处理代码产生的错误,例如使用try-catch块来捕获并处理异常,或者报告已知的错误信息。
7.代码的可读性规范:代码应该清晰、简单、易于理解和阅读,这可以通过分解较大的函数、避免使用嵌套和使用代码注释来实现。
二、变量声明与使用在IEC编程规范中变量声明与使用是重要的编程方面,其目的是提高代码的可读性和可靠性。
以下是变量声明与使用的主要规范:1.变量应该在声明时被初始化,这有助于防止意外的bug情况。
2.避免使用全局变量,代码应该使用局部变量和参数来处理数据。
3.变量应该被尽可能地限制作用域,尤其是与实时性相关的应用中。
4.避免使用不合理的符号,例如字母O与数字0之间混淆等。
软件开发中的编码规范和代码注释规范软件开发中的编码规范和代码注释规范随着计算机技术的不断发展,软件开发作为一门重要的技术也越来越受到人们的关注。
而在软件开发的过程中,编码规范和代码注释规范是非常重要的一环。
编码规范和代码注释规范的标准化不仅可以提高代码的可读性和可维护性,而且可以使得多人协同开发更加得心应手。
本文将从编码规范和代码注释规范两个方面来探讨其在软件开发中的重要性及应用方法。
一、编码规范编码规范是指在软件开发中制定的一套规定,用于规范代码的书写方式。
有了编码规范,开发人员可以更加高效地、统一地编写代码,从而降低开发过程中的错误率,节省时间和精力。
编码规范需要对一些书写细节进行标准化规范,下面我们来看一些常见的规范。
1.命名规范命名规范是指在命名变量、函数和类时的规则。
通常来说,命名应该反映变量、函数或类的作用和含义,应该采用有意义的词语,同时应该符合语言的命名规范,例如:1)变量名应该是一个名词,采用小写字母和下划线组成,如student_name。
2)函数名应该是一个动词,采用小写字母和下划线组成,如get_student_name。
3)类名应该是一个名词,采用大写字母开头的驼峰命名法,如StudentInfo。
2.注释规范注释规范是指在代码中添加注释,以便于代码的阅读和维护。
在注释时应该注意以下几点:1)注释应该使用简洁、明了的语言。
2)注释应该放在代码的上面或者右侧,而不是内嵌在代码中。
3)注释应该尽可能地详细描述代码的作用和逻辑,尤其是一些复杂的代码片段。
3.缩进规范缩进规范是指在编写代码时,应该按照一定的规则对代码进行缩进,以便于代码的可读性和可维护性。
通常来说,缩进应该按照以下原则进行:1)应该采用4个空格的缩进。
2)每个代码块应该有单独的缩进级别。
3)缩进应该注意对齐和排列方式。
二、代码注释规范在编写代码的同时,代码注释也是很重要的一环。
代码注释可以帮助其他人更好地理解代码和维护代码,在注释的时候应该遵循以下规范:1.注释类型通常来说,代码注释可以分为两种类型:行注释和块注释。
中国人寿保险股份有限公司标准C#编码规范(2011版)中国人寿保险股份有限公司信息技术部发布文档信息1 概述1.1 目的C#编码规范作为使用C#语言进行程序开发的规范,详细描述了C#语言开发中命名、声明、语句、注释、排版等的规范,并对编程惯例进行约束,用于指导使用C#语言进行开发的项目进行代码规范和检查。
同时还为安全性规范和单元测试提供指导。
1.2 适用范围本规范适用于公司全系统。
1.3 术语定义C#:是由MicroSoft公司推出的C#程序设计语言,是.NET平台中主要的开发语言之一。
2 编码规范2.1 排版规范1)缩进、换行、空行程序块要采用缩进风格编写,缩进的空格数为4 个。
1.函数或过程的开始、结构的定义代码采用缩进风格。
2.循环和判断语句(if、for、foreach、do、while、switch、case 等)中的代码采用缩进风格。
3.一行代码的长度不能超过屏幕显示范围(一般控制在80 个字符以内)。
4.长的语句要分成多行书写。
5.长表达式要在低优先级操作符处划分新行。
6.函数或过程中的参数较长时,要分成多行书写。
7.多行书写时,串连运算符要放在新行之首。
8.相对独立的程序段、变量之后要加空行。
10.在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符,后不应加空格。
2)排版结构1.不允许把多个短语句写在一行中,即一行只写一条语句。
但if、for、foreach、while 等语句后的不单独占用一行,可以使行数减少,让一个窗口视图可以看到更多的逻辑。
2.不同类型的操作符混合使用时,即使实现优先级与实际需要相符,最好也使用括号隔离,以便代码更加清晰。
2.2 变量规范1)变量的使用1.定义并明确变量的含义、作用、取值范围及变量间的关系。
2.变量访问之前一定要初始化。
3.C#中没有全局变量和全局函数。
全局操作是通过静态变量和静态函数来实现的。
代码编写规范说明书(c#.net与)目录1 目的2 范围3 注释规范3.1 概述3.2 自建代码文件注释3.3 模块(类)注释3.4 类属性注释3.5 方法注释3.6 代码间注释4 命名总体规则5 命名规范5.1 变量(Variable)命名5.2 常量命名5.3 类(Class)命名5.4 接口(Interface)命名5.5 方法(Method)命名5.6 名称空间Namespace)命名6 编码规则6.1 错误检查规则6.2 大括号规则6.3 缩进规则6.4 小括号规则6.5 If Then Else规则6.6 比较规则6.7 Case规则6.8 对齐规则6.9 单语句规则6.10 单一功能规则6.11 简单功能规则6.12 明确条件规则6.13 选用FALSE规则6.14 独立赋值规则6.15 定义常量规则6.16 模块化规则6.17 交流规则7 编程准则7.1 变量使用7.2 数据库操作7.3 对象使用7.4 模块设计原则7.5 结构化要求7.6 函数返回值原则8 代码包规范8.1 代码包的版本号8.2 代码包的标识9 代码的控制9.1 代码库/目录的建立9.2 代码归档10 输入控制校验规则10.1 登陆控制10.2 数据录入控制附件1:数据类型缩写表附件2:服务器控件名缩写表1 目的一.为了统一公司软件开发设计过程的编程规范二.使网站开发人员能很方便的理解每个目录,变量,控件,类,方法的意义三.为了保证编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。
四.编码规范和约定必须能明显改善代码可读性,并有助于代码管理、分类范围适用于企业所有基于.NET平台的软件开发工作2 范围本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。
3 注释规范3.1 概述a) 注释要求英文及英文的标点符号。
b) 注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。
Core⾝份认证(Identity、Authentication)Authentication和Authorization每每说到⾝份验证、认证的时候,总不免说提及⼀下这2个词。
他们的看起来⾮常的相似,但实际上他们是不⼀样的。
Authentication想要说明⽩的是你是谁(你的⾝份是什么)Authorization想要说明⽩的是你能做什么(得到了什么权限)但是这两个词通常是要同时存在的。
要知道有什么权限前提是知道你是谁。
OAuth2认证这是最近很流⾏的认证的标准。
要完全理解他的话也要说上⼀⼤篇,在这⾥简单点说明:第三⽅⽹站能够得到认证⽅提供的⾝份和授予的权限。
就是上⾯提到的Authorization说个例⼦这⾥似乎说个栗⼦会⽐较好,例如搭乘飞机:假设你购买了⼀张南⽅航空的机票。
那么你去坐飞机的时候可能会出现以下场景:1.到南⽅航空的柜台checkin。
得到⼀张纸质的,上⾯有你⾝份证信息,航班信息。
2.到⼊站⼝被检票⼈员查票。
检票员会查看你的机票是否正确,机票⾝份信息是否与你的⾝份证信⼼对应。
3.到VIP休息室等待登机。
被服务⼈员告知你并没有权限进⼊VIP休息室,原因是购买的是普通票,⾮贵宾票。
4.登机,⼊座。
空乘⼈员核对你的航班是否对应当前的航班。
好了,上⾯的⼏个场景跟认证是相当的相似。
第⼀步checkin,对应的是认证系统,纸质票就是提供的票据。
第⼆步就相当于你⾃⼰的⽹站,得到了南⽅航空的认证,只要知道是南⽅航空颁发的票据,你都认为是有效的。
这⾥也有个特别的地⽅,就是机场不可能只认南⽅航空,可能东⽅航空,春秋航空都认,所以这个也是认证的特点,你的⽹站是可以同时实现多个具有相同规则的认证⽅提供的票据。
第三步相当于是权限的验证,虽然客户⼿上是有票据,但由于票据上声明(Claim)的权限并不包含VIP休息室使⽤。
第四步相当于允许的权限,有这个票据,可以指定做某些可做的事情。
为什么要⽤现在的服务基本上都是集群的,进⾏的⽹络通讯也以⽆状态请求为主。
C# 事件(Event)事件(Event)基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些出现,如系统生成的通知。
应用程序需要在事件发生时响应事件。
例如,中断。
事件是用于进程间通信。
通过事件使用委托事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联。
包含事件的类用于发布事件。
这被称为发布器(publisher)类。
其他接受该事件的类被称为订阅器(subscriber)类。
事件使用发布-订阅(publisher-subscriber)模型。
发布器(publisher)是一个包含事件和委托定义的对象。
事件和委托之间的联系也定义在这个对象中。
发布器(publisher)类的对象调用这个事件,并通知其他的对象。
订阅器(subscriber)是一个接受事件并提供事件处理程序的对象。
在发布器(publisher)类中的委托调用订阅器(subscriber)类中的方法(事件处理程序)。
声明事件(Event)在类的内部声明事件,首先必须声明该事件的委托类型。
例如:public delegate void BoilerLogHandler(string status);然后,声明事件本身,使用event关键字:// 基于上面的委托定义事件public event BoilerLogHandler BoilerEventLog;上面的代码定义了一个名为BoilerLogHandler的委托和一个名为BoilerEventLog的事件,该事件在生成的时候会调用委托。
实例 1using System;namespace SimpleEvent{using System;public class EventTest{private int value;public delegate void NumManipulationHandler(); public event NumManipulationHandler ChangeNum;protected virtual void OnNumChanged(){if(ChangeNum!=null){ChangeNum();}else{Console.WriteLine("Event fired!");}}public EventTest(int n ){SetValue(n);}public void SetValue(int n){if(value != n){value = n;OnNumChanged();}}}public class MainClass{public static void Main(){EventTest e =new EventTest(5);e.SetValue(7);e.SetValue(11);Console.ReadKey();}}}当上面的代码被编译和执行时,它会产生下列结果:Event Fired!Event Fired!Event Fired!实例 2本实例提供一个简单的用于热水锅炉系统故障排除的应用程序。
Oracle存储过程编码规范版本号:3.0目录1. 目的 (1)2. 名词解释与定义 (1)3. 规范内容 (1)3.1. 命名规范 (1)3.2. 注释信息 (3)3.3. 错误处理 (4)3.4. 其它规范 (6)4.过程应用指南 (8)4.1. 剪裁 (8)4.2. 使用指南 (8)1.目的规范项目SP代码的编写,保证程序风格的同一性和一致性。
2.名词解释与定义无3.规范内容3.1.命名规范3.1.1.存储过程名称采用“p+模块名一位缩写+功能描述”的格式命名;如p_YWRTJOB。
3.1.2.存储过程的输入输出参数存储过程根据需要自行决定参数的数目、类型和长度;对于需要提交给任务管理器调用的存储过程,为了保证任务管理器的统一调度;需要用另外一个存储过程进行封装,该封装sp的输入参数采用i_parm命名,输出变量采用o_parm来命名,类型为varchar2(80), 如长度需要超过80,提交讨论,原则不应大于200。
只能有一个输入和一个输出参数,输出参数的第一位是…O‟(OK)或者…E‟(ERROR),第2位开始开始直接写错误信息(如果正确返回,从第2位开始可以写返回信息,内容不作要求),用该sp来调用具体实现业务操作的存储过程。
3.1.3.变量的命名所有的变量采用格式为:变量前缀_变量描述。
一般变量的前缀使用类型的缩写:NCHAR:ncCHAR:cV ARCHAR2: vcNV ARCHAR2: nvcNUMBER: nDATE: dROWID: ridUROWID: uridBINARY_INTEGER: biPLS_INTERGER: piBOOLEAN:bBLOB: blbCLOB: clbNCLOB: nclbBFILE: bfl例如:vc_StnName、n_FlightDate。
游标变量:前缀为cur。
存放游标记录集。
记录型变量:前缀为rec。
存放记录型数据。
表类型变量:前缀为tab。
软件开发中的编码规范和代码注释规范在软件开发中,编码规范和代码注释规范对于代码的可读性和可维护性起着至关重要的作用。
编码规范是一组约定俗成的规则,旨在规范代码的书写和格式化,使代码更加清晰易读,而代码注释规范则是指在代码中添加注释的规则和标准。
本文将分别从编码规范和代码注释规范两个方面展开讨论,以期为软件开发人员提供一些有益的指导和建议。
编码规范编码规范是指编程时应遵守的一系列规则和约定。
它不仅仅包括代码的格式化和排版,还包括一些最佳实践和设计思想。
良好的编码规范可以提高代码的可读性、减少错误、提高维护性,并且有助于多人协作开发。
下面我们将从代码格式化、命名规范和最佳实践三个方面介绍编码规范的内容。
1.代码格式化代码的格式化是指代码的排版和结构。
良好的格式化可以使代码更加清晰易读,便于他人阅读和理解。
以下是一些常见的代码格式化规范:-缩进:使用统一的缩进风格,比如使用4个空格或者一个制表符来进行缩进。
-行长:避免单行代码过长,建议控制在80-120个字符以内。
-空格和换行:在运算符两侧和逗号后应加空格,适当换行以提高代码的可读性。
2.命名规范良好的命名规范可以使代码的含义更加清晰明了。
下面是一些常见的命名规范约定:-变量名:使用有意义的变量名,遵循驼峰命名法或者下划线命名法。
-函数名:使用动词或动宾结构,清晰地表达函数的作用。
-常量名:使用大写字母和下划线来表示常量。
3.最佳实践除了代码格式化和命名规范,编码规范还包括一些最佳实践和设计思想,比如:-模块化:尽量将代码分解成独立的模块,便于复用和维护。
-函数设计:函数应该短小精悍,只做一件事情,并且要有清晰的输入输出。
-错误处理:合理处理异常情况,避免出现不可预期的错误。
-注释:代码中应该包含必要的注释,便于他人理解和维护。
代码注释规范代码注释是为了在代码中解释其含义和逻辑,以便他人理解和维护代码。
良好的代码注释可以使代码更具可读性和可维护性。
下面我们将从注释的内容、格式和位置三个方面介绍代码注释规范的内容。
一名程序员必备的编码规范指南在当前快速发展的技术领域中,程序员越来越重要。
而在进行编码任务时,编码规范则是必不可少的。
编码规范不仅可以提高代码可读性,降低后期维护的成本,还能减少潜在的漏洞和错误出现的可能。
因此,本文将为程序员们提供一份必备的编码规范指南。
1. 命名规范命名规范可以让程序员更好地理解变量、函数、类和其它组件的名称以及其所代表的含义。
以下是命名规范的一些基本要点:- 变量名要有意义好的变量名可以让代码更加清晰易读。
引用形式使用驼峰命名。
例如:personName、userCode、serviceName。
- 函数名的动词要体现函数的功能函数名应该体现函数的作用,使用动词或动词短语描述函数的功能。
例如:getUserInfo、processText。
- 类和接口的名称要使用名词类和接口的名称应该使用名词以反映其本质的含义。
如果类表示实体,例如一个人,那么类名就应该是Person,如果类表示所支持的服务,则类名应该是Service。
- 常量名要全部大写常量名应该使用全部大写的布局,例如MAX_VALUE或MIN_VALUE。
2. 缩进和格式化规范使用缩进和格式化可以让代码更加易读,在团队协作中可以节省时间并提高效率。
以下是缩进和格式化规范的一些基本要点:- 使用制表符而不是空格制表符是专门用于缩进的,它可以便于用户在编辑器中按下tab键对代码进行缩进。
只有当要求绝对的对齐时才使用空格。
- 缩进级别为4个空格将缩进级别设置为4个空格,可以让代码更加美观和整洁。
- 左大括号不要单独占据行如果大括号位于函数参数或语句末尾,则将其放在此位置;否则,将其与下一行代码放在同一行,并用空格分开。
3. 注释规范注释可以让代码更加清晰易懂,在代码维护和管理中也具有重要的作用。
以下是注释规范的一些基本要点:- 避免使用无用注释确保注释是有用的,不要为大家注释每一行代码,只需要注释有可能让人混淆或无法理解的代码即可。
软件开发编码及命名规范1.目的为了保证企业编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。
2.范围适用于企业所有基于.NET平台的软件开发工作。
3.规范内容3.1.代码格式所有的缩进为4个空格,使用的默认设置。
在代码中垂直对齐左括号和右括号。
if(x==0){Response.Write("用户编号必须输入!");}不允许以下情况:if(x==0) {Response.Write("用户编号必须输入!"); }或者:if(x==0){ Response.Write("用户编号必须输入!");}为了防止在阅读代码时不得不滚动源代码编辑器,每行代码或注释在1024*800的显示频率下不得超过一显示屏当一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。
每一行上放置的语句避免超过一条。
在大多数运算符之前和之后使用空格,这样做时不会改变代码的意图却可以使代码容易阅读。
例:int j = i + k;而不应写为int j=i+k;将大的复杂代码节分为较小的、易于理解的模块。
编写SQL语句时,对于关键字使用全部大写,对于数据库元素(如表、列和视图)使用大小写混合。
将每个主要的SQL子句放在不同的行上,这样更容易阅读和编辑语句,例如: SELECT FirstName, LastNameFROM CustomersWHERE State = 'WA'3.2.注释(Comment)规范注释规范包括:模块(类)注释规范、类的属性、方法注释规范、代码间注释3.2.1.模块(类)注释规范模块开始必须以以下形式书写模块注释:///<summary>///模块编号:<模块编号,可以引用系统设计中的模块编号>///作用:<对此类的描述,可以引用系统设计中的描述>///作者:作者中文名///编写日期:<模块创建日期,格式:YYYY-MM-DD>///</summary>如果模块有修改,则每次修改必须添加以下注释:///<summary>///Log编号:<Log编号,从1开始一次增加>///修改描述:<对此修改的描述>///作者:修改者中文名///修改日期:<模块修改日期,格式:YYYY-MM-DD>///</summary>3.2.2.类属性注释规范在类的属性必须以以下格式编写属性注释:/// <summary>///属性说明/// </summary>3.2.3.方法注释规范在类的方法声明前必须以以下格式编写注释/// <summary>/// 说明:<对该方法的说明>/// </summary>/// <param name="<参数名称>"><参数说明></param>/// <returns>///<对方法返回值的说明,该说明必须明确说明返回的值代表什么含义> /// </returns>3.2.4.代码间注释规范代码间注释分为单行注释和多行注释:单行注释: //<单行注释>多行注释:/*多行注释1多行注释2多行注释3*/代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。
C# 编码规范南方软件精英实验室二零一三年十月目录1目标 (4)2概述 (4)3总体要求 (4)3.1程序结构化 (4)3.2代码可读性 (4)3.3代码结构化 (4)3.4正确性与容错性 (5)4编码规范 (5)4.1文件结构 (5)4.1.1C# 文件 (5)4.1.2目录结构 (5)4.2缩进 (5)4.2.1换行 (5)4.2.2空格 (6)4.3注释 (6)4.3.1模块注释 (6)4.3.2单行注释 (7)4.3.3类注释 (7)4.3.4方法注释 (7)4.4声明 (7)4.4.1单行声明变量数 (7)4.4.2初始化 (8)4.4.3类和接口声明 (8)4.5功能语句 (9)4.5.1简单逻辑 (9)4.5.2if-else语句 (9)4.5.3For / Foreach 语句 (9)4.5.4While/do-while 语句 (9)4.5.5Switch 语句 (10)4.5.6Try-catch 语句 (10)4.6空白 (11)4.6.1空白行 (11)4.6.2参数条件之间的空白 (11)4.6.3表格式的样式 (12)4.7命名规范 (12)4.7.1大写 (12)4.7.1.1Pascal 风格 (12)4.7.1.2驼峰规则 (12)4.7.1.3大写风格 (12)4.7.2命名方法 (12)4.7.2.1类命名 (13)4.7.2.2接口命名 (13)4.7.2.3枚举命名 (13)4.7.2.4常量命名 (13)4.7.2.5参数命名 (13)4.7.2.6变量命名 (13)4.7.2.7方法命名 (13)4.7.2.8属性命名 (14)4.7.2.9事件命名 (14)4.7.2.10大写风格 (14)4.8开发习惯 (14)4.8.1可见性 (14)4.8.2不要硬编码数字 (15)4.9代码示例 (15)4.9.1作用域(“{}”)示例 (15)5附录 (16)5.1XML注释标记的使用 (16)6版本记录 (19)1目标为新宇DotNet组的C#程序员制定一个统一的编码规范,最大限度减少不同程序员开发的代码间的差异。
2概述为了使应用程序的结构和编码风格标准化,便于阅读和理解编码,以提高开发效率和产品的标准化,制订一套开发规范和标准势在必行。
此外,好的编码约定可使源代码严谨、可读性强且意义清楚,与其它语言约定相一致,并且尽可能的直观。
希望开发人员严格遵守此套开发规范和标准,并落实到自己的程序中。
本规范主要针对C#程序员,但是其中许多规则同时适用于其他语言的程序员。
3总体要求3.1程序结构化∙程序结构清晰,函数功能简单易懂(单个函数的代码行数不超过100行)3.2代码可读性∙保持注释与代码完全一致∙每个源程序文件,都有文件头说明,详细见下节∙每个函数,都有函数头说明,详细见下节∙主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义∙处理过程的每个阶段都有相关注释说明∙在典型算法前都有注释, 同时算法在满足要求的情况下尽可能简单∙利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 4个字节∙循环、分支层次一般不应超过五层∙代码简单的分支应该写在前面∙不允许同行出现两个语句∙空行和空白字符也是一种特殊注释∙一目了然的语句不加注释∙注释的作用范围可以为:定义、引用、条件分支以及一段代码∙常量定义(DEFINE)有相应说明3.3代码结构化∙禁止GOTO语句∙用 CASE 实现多路分支∙避免不必要的分支∙用 IF 语句来强调只执行两组语句中的一组。
尽量不使用 ELSE RETURN∙尽量避免从循环引出多个出口3.4正确性与容错性∙所有变量在调用前必须被初始化∙不要比较浮点数的相等,如: 10.0 * 0.1 == 1.0 ,不可靠∙访问外部资源(数据库,外部文件)时使用规范的容错语句例如:try{}catch{}finally{}4编码规范4.1文件结构4.1.1C# 文件尽量不要让你的类或者文件太长,一般不应超过2000行代码。
请按照功能划分你的代码,使结构保持清晰。
一般情况下,一个文件应当只有一个类,并且文件名应该与类名保持一致。
4.1.2目录结构应该为每个名称空间(namespace)建立一个目录(例如,我们可以为名称空间MyProject.TestSuite.TestTier建立这样的目录:MyProject/TestSuite/TestTier)。
这样做可以让你很快定位到指定名称空间下的类文件。
4.2缩进4.2.1换行如果表达式太长而一行无法写下时,请按照下列规范进行换行:●可以在逗号后面进行换行●可以在操作符号后进行换行●尽量选择在较高层处进行换行●换行后的新行应当与前一行中同级别的运算符对齐例子:方法调用换行:longMethodCall(expr1, expr2,expr3, expr4, expr5);算术表达式换行:规范的:var = a * b / (c - g + f) +4 * z;不规范的:var = a * b / (c - g +f) + 4 * z;上面第一个表达式的换行方式是符合规范的,它换行在括号外面(较高层)。
另外请注意,换行后的新行应使用tab和空格保持与前一行的同级运算符对齐,例如:> var = a * b / (c - g + f) +> ......4 * z;'>'表示Tab符, '.'表示空格。
你可以设置你的编辑环境,使Tab和空格在编辑时是可见的,这是一个不错的习惯。
4.2.2空格我们选择Tab缩进作为缩进时采用的标准。
[请不要使用空格代替Tab键!]4.3注释4.3.1模块注释在一个程序模块的开始,应用注释说明模块的名字、功能、开发者和日期和版本变更历史,如下所示:/******************************************************************* Copyright(c) Suzsoft DotNet Group* Description : Tenant access class* CreateDate : 2006-06-02 05:03:46* Creater : Johnson Cao* LastChangeDate:* LastChanger :* Version Info : 1.0* ******************************************************************/4.3.2单行注释程序员应当在算法比较复杂的表达式前、特殊含义的变量前或者在一整段功能代码开始之前添加适当的注释。
我们要求这样的单行注释采用”//”符号,例如:// Calculate subTotalDecimal subTotal = 0;4.3.3类注释在定义一个类之前,应用“///”注释说明类的功能、使用方法和特殊的属性,如下所示:/// <summary>/// This class.../// <remarks>/// Please note …/// </remarks>/// </summary>详细的xml注释标记的使用请参见附录。
4.3.4方法注释在定义类成员方法前,应说明该过程/函数的名字、功能、输入/输出和版本变更历史,如下所示:///<summary>/// This method ….///<param name="param1">this is a param of the method SomeMethod.</param>///<retvalue>a return object</retvalue>///</summary>//-------------------------------------------------------------------------------------------------// Change History:// Date Who Changes Made// 2000-5-1 Author1 Initial creation// 2000-5-15 Author2 Add some code//-------------------------------------------------------------------------------------------------public object SomeMethod(object param1){}4.4声明4.4.1单行声明变量数我们推荐每行只声明一个变量,因为这样你可以在声明后面写上该变量的注释,例如:int level; // indentation levelint size; // size of table请不要在同一行声明不同含义的变量,比如:int a, b; //What is 'a'? What does 'b' stand for?上面的例子同样可以说明了没有意义的变量名称会让人很难理解,因此,在定义变量的时候,我们一定要给它们一个有含义的名字。
4.4.2初始化最好在一定义后就初始化变量,例如:string name = ;orint val = time.Hours;注意:如果你想要初始化对话框变量,建议使用using 声明方式例如:using (OpenFileDialog openFileDialog = new OpenFileDialog()){...}4.4.3类和接口声明在声明类和接口的时候应当遵照下列规范:●方法名称和放置参数的括号”(”之间不应该有空格●类名声明之后应另起一行写作用域开始符”{”●作用域结束符”}”应当单独占一行,并与对应的开始符”{”处在同一缩进位置上示例:Class MySample : MyClass, IMyInterface{int myInt;public MySample(int myInt){this.myInt = myInt ;}void Inc(){++myInt;}void EmptyMethod(){}}4.5功能语句4.5.1简单逻辑每一行代码应当只实现一个逻辑4.5.2if-else语句if-else应该按照这种格式书写:if(condition){DoSomething();...}else{DoSomethingOther();...}4.5.3For / Foreach 语句For循环语句格式:for(int i = 0; i < 5; ++i){...}或者,如果循环只有一个简单执行语句的话:for (initialization; condition; update) ;foreach循环格式:foreach(int i in IntList){...}注意:即使循环中只有一句执行语句,我们也要求使用”{}”4.5.4While/do-while 语句While循环格式:while (condition){...}对于空循环可以这样写:while (condition) ; do-while循环格式:do{...}while(condition);4.5.5Switch 语句switch格式:switch (condition){case A:...break;case B:...break;default:...break;}4.5.6Try-catch 语句try-catch格式:try{...}catch (Exception) {} 或者:try{...}catch (Exception e){...}或者:try{...}catch (Exception e){...}finally{...}4.6空白4.6.1空白行空白行有增强可读性的作用。