Net开发要求规范.docx

上传人:b****5 文档编号:4290073 上传时间:2022-11-28 格式:DOCX 页数:38 大小:44.13KB
下载 相关 举报
Net开发要求规范.docx_第1页
第1页 / 共38页
Net开发要求规范.docx_第2页
第2页 / 共38页
Net开发要求规范.docx_第3页
第3页 / 共38页
Net开发要求规范.docx_第4页
第4页 / 共38页
Net开发要求规范.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

Net开发要求规范.docx

《Net开发要求规范.docx》由会员分享,可在线阅读,更多相关《Net开发要求规范.docx(38页珍藏版)》请在冰豆网上搜索。

Net开发要求规范.docx

Net开发要求规范

.net开发规X

 

1概述

一组通用目的的编码约定应该定义完成上述目的所必需的、能让程序员自由地创建程序逻辑和功能流程的最小的要求。

最小编码约定的目的是使程序易于阅读和理解,从而指导程序员更好地完成开发任务。

2命名规X

指导性原如此

命名是编程的核心。

能够对变量和函数/过程进展表意清晰而准确的命名,就能使程序的可读性大大提高,达到不说自明的效果。

真正的名称是深入认真思考一个对象的生态环境后才能给出的。

程序设计人员只有在充分理解并把握整个系统时,才可能给出真正适宜的名字。

如果名称选用恰当,一切就显得很自然,各局部关系清晰,意义可以推导而出,阅读程序时可以按常识推理,从而减小程序员对已有程序的阅读和理解困难,提高工作效率,使新程序员能在尽量短的时间内进入角色。

以下章节描述了程序命名的一些指导性原如此。

使用正确的大小写风格

为保证良好的程序可读性,对命名的大小写必须按照一致的规定编写,主要包括Pascal风格和Camel风格两种,下面将会有专门的章节进展详细说明。

使用描述性英文名称

为保证程序的可读性,要采用准确描述其意义的名字。

英语是国际通用语言,绝大多数商业类库或函数库代码都是由英语编写的。

要与标准接轨,充分利用网上的程序资源,应尽量使用英语命名。

使用易读的名称

如果不可读或不易读,如此不便于讨论和交流。

因此我们要尽量使用大众化名称,防止使用不常用的单词。

尽量防止在名称中使用编码

对名称使用编码就需解码才能理解。

少数几个前缀字母有助于区分名称类别。

但为了追求风格而过分使用前缀和后缀就会造成生涩难懂的名字。

例如SRD2T3。

含有编码的名称一般都没有可读性。

当然,任何编码,只要科学,时间久了都能被掌握。

但是,掌握编码需要新成员的额外精力,增加了适应难度,因此应尽量防止。

同义词中使用固定的单词

首先,我们应尽量使用英语词汇,因为汉语拼音实际上也是一种名称编码,特别是使用拼音首字母,即使是懂汉语拼音的人也未必能理解。

有了用英语命名的前提,我们还应该注意:

一个抽象概念可能有多个表述同义词,选择一个,始终如一。

如对同一动作,在不同类中选用不同的名称,比如,fetch,retrieve和get,那么,使用你的类从事编程的人就要多费很多精力去理解它们。

也就是说,我们应该通过使用一致的名称,创建统一的编程接口,简化学习的难度。

保持词义的前后一致

多数词都有不止一个意思,但在同一个系统中,应始终保持同一个意思。

这和前面的原如此是相对应的。

使用不同的词汇,使人联想不同的接口和/或操作。

同样,使用同样的词汇,使人联想一样的接口和/或操作。

如果我学过使用DeviceManager:

:

add(),我就会期望可以使用ProtocolManager:

:

add().这是根据名称产生的联想,甚至连想到可以使用*Manager:

:

add()。

要保证这种联想能成立,前后词义必须一致。

如果自己设计一个系统,要尽量做到保持词义的一致。

记住,在两个完全不同的X畴内使用一样的名字是很不可取的。

名词和动词的选用

类和对象应当使用名词或名词短语命名。

方法中强调过程用动词,返回值用名词。

作为一名设计人员,可能不太在意命名的琐事。

尝试使用你设计的类去编写一段用户程序,看看有多少别扭或混乱的地方,一定可以反过来有助你改良设计。

使用计算机专业术语

尽量使用约定成俗的惯用语、计算机科学术语、算法名称、设计模式名称、数学名词等软件编程相关名词。

这样似乎有点异端,但这总好过让程序员费劲找客户弄清楚自己原本清楚的概念,只是由于名称的不同使他们疑惑。

我们是讲编码规X,程序员大多数是计算机专业的,或对计算机专业已有了深入了解的。

很少最终用户会阅读程序,即使有,也是有相当计算机软件功底的。

相反,程序维护人员必须阅读程序,所以应尽可能使用计算机术语。

如:

运用工厂模式类的命名应该是“名词+Factory〞。

必要时可使用业务术语

如果工作的重点不在程序本身,或问题的描述比问题的解决更重要,可使用业务术语。

在分析阶段,使用业务术语比使用计算机术语更好,因为容易被客户理解和承受。

防止误导

防止使用已有其它明确意义的名词。

例如,"hp","aix",和"sco"被用作UNIX平台与其变种的名称,如果再用来作为变量或函数名称就很有问题,会引起误解。

即使你在解决的问题用"hp"是很好的缩写也不应使用"hp"。

名词需要语境说明

只有少数情况下,孤立的一个名字有明确含义。

多数情况下,名称需要置于一定的语境中才有意义。

比如,在类中,函数中或注释中。

换句话说,在面向对象的语言中,在类属性的名称中包含类名是多余的。

例如,不应该使用Book.BookTitle,而应该使用Book.Title。

pany.address_和Customer.address_,同样都是address,但仅在语境中才有意义,以下的命名是不可取的:

pany.panyAddress_,Customer.customerAddress_。

不要添加人为的语境

不要在类的前面冠以公司名缩写、项目名称缩写或其他标志性前缀。

例如,在做知识管理系统时,把员工类命名成KmsUser。

以上命名法是不可取的,这样势必造成代码重复,影响代码的重用。

如使用同一个类,如此KmsUser在其他系统中就显得不和谐了。

防止名称差异不明显造成混淆

这个问题源于编写程序仅仅是为了能编译通过或能解译执行。

编译和解译程序不允许在同一域内用一样的名字指称两个东西。

所以,遇到编译问题时,就随便将其中的一个改变一下。

更糟糕的是,原本同一个名称,因拼写错误变成两个名称。

这里要说的关键问题是,如果要区分两样不同的东西,一定要保证名称有实质性的差异。

例如,假如将一个类命名成Product,另一个类命名成ProductInfo或ProductData,就会因差异不明显造成混淆。

因为Info和Data没有具体的意思。

同理,不要在OO编程中使用Class或Object作为名称的一局部。

CustomerObject和Customer有区别?

NameString比Name好?

难道一个Name还会是浮点数或整数不成?

特别要强调的是,对于大小写敏感的编程环境,我们不要使用仅有大小写区别的名字。

例如,Customer,customer不应作为两个名字。

大写风格

以下章节描述了不同方式的大写方式.术语将在通篇文档中被经常引用.

Pascal风格

这种风格大写每个单词的首字母

BackColor

应在所有由多单词组成的公共描述符中使用这种方式.举例而言,使用TextColor就比Textcolor或Text_color更好.

注意不要大写“连接词〞〔一个单词中包含了几个单词,但这个单词本身有自己的意思,如Checkbook〕每个组合单词的首字母。

应该将这个单词作为一个单词来考虑,而非几个单词的组合。

使用词典决定一个组合词是不是应该作为一个单词来使用。

Camel风格

这种风格除了第一个单词的首字母,其他单词都应大写首字母,如下所示

backColor

在局部变量参数名或私有类属性名称上使用camel风格。

大写风格

只在少于两个字母的缩写中使用大写。

三个以上字母的缩写都应该使用PASCAL风格。

举例而言

System.IO

System.CodeDom

一个另外的情形是和原有的未管理的标志兼容,而原来常用大写来表示枚举和常量。

通常标志符不应该暴露给外部。

大写小结

下表描述了不同类型的描述符该使用大小写

类型

风格

备注

Class

Pascal风格

  

Enumerationvalue

Pascal风格

  

Enumerationtype

Pascal风格

  

Event

Pascal风格

 

Exceptionclass

Pascal风格

用后缀Exception.

Read-onlystaticfield

Pascal风格

  

Interface

Pascal风格

用前缀I.

Method

Pascal风格

  

Namespace

Pascal风格

  

Property

Pascal风格

  

Publicinstancefield

Pascal风格

很少使用,更多使用properties.

Protectedinstancefield

camel风格

很少使用,更多使用properties.

Parameter

camel风格

  

单词选择

不要使用常用的命名空间的名字做类名,举例而言不要使用以下任何单词做类名

System

Collections

Forms

UI

不要使用和以下关键字冲突的识别符,举例而言,防止这样使用:

AddHandler

AddressOf

Alias

And

Ansi

As

Assembly

Auto

Base

Boolean

ByRef

Byte

ByVal

Call

Case

Catch

CBool

CByte

CChar

CDate

CDec

CDbl

Char

CInt

Class

CLng

CObj

Const

CShort

CSng

CStr

CType

Date

Decimal

Declare

Default

Delegate

Dim

Do

Double

Each

Else

ElseIf

End

Enum

Erase

Error

Event

Exit

ExternalSource

False

Finalize

Finally

Float

For

Friend

Function

Get

GetType

Goto

Handles

If

Implements

Imports

In

Inherits

Integer

Interface

Is

Let

Lib

Like

Long

Loop

Me

Mod

Module

MustInherit

MustOverride

MyBase

MyClass

Namespace

New

Next

Not

Nothing

NotInheritable

NotOverridable

Object

On

Option

Optional

Or

Overloads

Overridable

Overrides

ParamArray

Preserve

Private

Property

Protected

Public

RaiseEvent

ReadOnly

ReDim

Region

REM

RemoveHandler

Resume

Return

Select

Set

Shadows

Shared

Short

Single

Static

Step

Stop

String

Structure

Sub

SyncLock

Then

Throw

To

True

Try

TypeOf

Unicode

Until

volatile

When

While

With

WithEvents

WriteOnly

Xor

eval

extends

instanceof

package

var

缩写

1、请不要砍掉或抽取识别符的局部来作为名称使用。

如使用GetWindow比GetWin更好.

2、请不要使用使用不被广泛认可的缩写。

3、只有绝对需要时再使用广为人知的缩写。

可以使用UI来表示UserInterface,用OLAP来表示On-lineAnalyticalProcessing.

命名空间

以下模板举例说明了命名空间的命名规如此。

.[.][.Design]

因此我们希望看到这样如下命名空间:

Microsoft.Media

 

1、防止两个PUBLISED的NAMESPACES名称一样的可能。

使用公司名称或者一个正式分支的名称如用Microsoft.Office来表示Microsoft提供的OfficeAutomationClasses。

2、使用一个稳定的被广泛认可的技术名称作为第二层名称

3、不要使用组织的结构层次作为命名空间的层次依据

4、请在DESIGN-TIME命名空间前加上.Design前缀以表示根底命名空间DESIGN-TIME特性。

如包含了用来设计应用程序的的设计器和相关设计类。

5、

6、在适当的地方使用复数命名。

例如采用System.Collections而非System.Collection。

对此例外的是品牌名和缩写。

如用System.IO而非System.IOs。

7、不要让命名空间和类都使用同样的名字。

如,当有个类叫Debug时就不要使用Debug来作为命名空间的名字。

类和类成员

类的命名指南

1、使用名词或名词短语命名类。

2、使用Pascal风格

3、慎重使用缩写命名类。

4、不要使用任何类前缀〔如C〕

5、不要使用强调符号。

6、偶尔可能会出现已I作为类名开头的情况,而这个类又不是一个接口类。

这种情况下只要第二个字母是小写就可以承受。

如IdentityStore.

7、建议使用组合词来命名派生类。

在此情况下,你应该考虑使用基类名称作为派生类名称的结尾。

举例而言,在英语中的〞CoffeeCup〞是说的一种杯子,而不是一种咖啡。

又如ApplicationException表示一种例外,而BooleanSwicth表示一种Switch,SerializableAtrribute是一种属性。

但对此应该合理的判断,如Button是一种Control虽然Control并没有出现在名字中。

以下是一些正确的命名的例子

publicclassFileStream{

}

publicclassButton{

}

publicclassString{

}

Attribute命名指南

在自定义属性类的后边应该加上Attribute作为后缀。

publicclassObsoleteAttribute:

Attribute{

}

枚举命名指南

1、使用Pascal风格来命名枚举类型.

2、使用Pascal风格命名枚举值.

3、不要使用简写来命名枚举值.

∙不要在枚举前加前缀(如adXXX来命名ADOenums,rtfXXX来命名richtextenums,等.).

∙不要使用在枚举上加后缀

∙使用单数来命名枚举,除非它是一个BIT类属性.

∙使用复数来命名BIT类属性。

静态类属性名

1、使用名词,名词短语或简写来命名静态类属性

2、使用PASCAL风格来命名静态类属性

不要使用匈牙利命名法来命名静态类属性名称

参数名

使用有意义的参数名.在所有场合,参数名称和类型应该清楚地描述以决定其反映的意义..

使用camel风格来命名参数

使用

不要使用reserved参数。

在下个版本中需要更多的数据那么就使用重载。

.

请不要使用匈牙利命名法来在名称前加前缀

TypeGetType(stringtypeName)

stringFormat(stringformat,object[]args)

方法命名指南

使用动词或动词短语来命名方法。

使用Pascal风格来命名方法.如

RemoveAll()

GetCharArray()

Invoke()

属性命名指南

使用名词或名词短语来命名属性

使用Pascal来命名属性.

可以考虑把属性命名和其类型一样。

当属性名和一个类型名一样时,那么一定要让这个属性就是这个类型。

虽然这听起来有点多余,但这是正确的。

以下例子说明了正确的属性命名方法.

publicenumColor{...}

publicclassControl{

publicColorColor{get{...}set{...}}

}

以下是错误的命名

publicenumColor{...}

publicclassControl{

publicintColor{get{...}set{...}}

}

在错误的例子中,Color枚举的成员不可能被引用到,因为Color.xxx的COLOR将被解释为Color〔Int〕属性,系统将会到System.Int32中的实例中去访问成员。

.

事件命名指南

使用事件EventHandler来命名HANDLER〔代理类型〕。

publicdelegatevoidMouseEventHandler(objectsender,MouseEventArgse);

两个参数取名叫sender和e.

sender参数表示触发时间的对象。

sender都是object类型,就算是它可以是更明确的类型。

与事件关联的状态被封装到一个事件类的实例中e中.对它应该使用适当明确的事件类型。

publicdelegatevoidMouseEventHandler(objectsender,MouseEvente);

使用EventArgs后缀来命名事件的参数,如

publicclassMouseEventArgs:

EventArgs{

intx;

inty;

publicMouseEventArgs(intx,inty){

this.x=x;

this.y=y;

}

publicintX{get{returnx;}}

publicintY{get{returny;}}

}

使用现在时态和过去时态来命名有“前〞、“后〞概念的事件。

〔不要使用BeforeXxx\AfterXxx〕.如,一个可以取消的关闭事件可以表示为Closing和Closedevent.

考虑使用动词来命名事件

大小写敏感

不要出现必须要大小写敏感支持的名字.组件应该在无论大小写敏感或不敏感的语言中都能使用。

因为需要大小写敏感的语言不能识别两个一样内容但用大小写区分的名字,所以组件必须防止这种情况

不要出现两个只用大小写区分的命名空间,如

namespaceee.cummings;

namespaceEe.Cummings;

不要出现两个只用大小写区分的参数如.

voidfoo(stringa,stringA)

不要出现只用大小写区分的同一命名空间的类型

 

不要出现只用大小写区分的同一类型属性。

intFoo{get,set};

intFOO{get,set}

不要出现两个只用大小写区分的方法

voidfoo();

voidFoo();

3程序注释规X

要使程序易于理解,注释十分重要。

在此,提供根本的注释编写规X。

注释编写准如此

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

●不允许给注释加外框。

●边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。

不再有用的注释要删除。

●注释的内容要清楚、明了,含义准确,防止注释二义性。

●防止在注释中使用缩写,特别是非常用缩写。

●注释应与其描述的代码相近,对代码的注释应放在其上方或右方〔对单条语句的注释〕相邻位置,不可放在下面,如放于上方如此需与其上面的代码用空行隔开。

变量注释和变量在同一行,所有注释必须对齐,与变量分开至少两个Tab键。

程序段或语句的注释在程序段或语句的上一行。

●注释与所描述内容进展同样的缩排。

●重要变量必须有注释。

●典型算法必须有注释。

●在循环和逻辑分支的地方必须写上注释。

●防止在一行代码或表达式的中间插入注释。

●在代码交付之前,必须删掉临时的或无关的注释。

模块注释

在一个程序模块的开始,应用注释说明模块的名字、功能、开发者和日期和版本变更历史,如下所示:

//----------------------------------------------------------------------------------------------------

//Name:

ChargeUser

//Function:

Chargecreditsfromtheuseraccountandsaveittotheuser،¯saccount

//Author:

AuthorName

//Date:

Aug.8,2000

//----------------------------------------------------------------------------------------------------

//ChangeHistory:

//DateWhoChangesMade

//----------------------------------------------------------------------------------------------------

//2000-5-1Author1Initialcreation

//2000-5-15Author2AddbStatusvariabletoidentifyUser،¯sstate

//2000-7-3Author3AddCheckBlackList()tocheckwhetheruser

//isinblacklist

//----------------------------------------------------------------------------------------------------

类的注释

在定义一个类之前,应用“///〞注释说明类的功能、使用方法和特殊的属性,如下所示:

///

///Thisclasscontainsthebusinessfacadefortheordersystem.

///

///Thebusinessfacadeisusedtoprovideasimplifiedinterfaceintothe

///ordersubsystems.

///

///

///

///ThisclassismarkedasMarshalByRefObjecttosupportremotedscenarios.

///

///

publicclassOrderSystem:

MarshalByRefObject

{

}

须注意的是,我们要遵从VS.NET对注释的约定,使用

标记来指定类总体注释的开始,用标记它的完毕。

对类的一些注解说明可以放在对中。

以后我们可以从注解自动得到对代码的说明文档。

如下例所示:

Thisclasscontainsthebusinessfacadefortheordersystem.Thebusine

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

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1