现在的位置: 首页 > 综合 > 正文

应用程序设计/命名及编码规范方案

2013年05月19日 ⁄ 综合 ⁄ 共 3850字 ⁄ 字号 评论关闭
[按]本文经过修订. 并且在持续更新中. 一部分内容采集自MSDN中文站.

应用程序设计/命名及编码规范方案

 

架构规范

总体设计

.NET web forms 应用程序的架构应遵循Microsoft建议的架构方案. 根据项目规模不同, 适当取舍各个基本层次. 将系统划分为多层的目的在于简化隔离各个子系统内部逻辑. 大体上应按照以下规则创建:

应至少包含表示层与业务

一般应将应用程序划分为: 表示层, 业务逻辑层, 数据访问三层.

如果业务过程较复杂, 应增加业务规则层

应为业务过程中的基本业务对象实现数据实体(一般是DataSet扩充子类)

应单一地使用存储过程操作数据库

如果需要与业务无关的基础组件(全局参数配置, 异常处理, 日志), 应包含应用程序框架层(System Framework)

如果包含Custom Controls, 应单独作为一项project.

 


上图是Visual Sudio.NET 所提供的样版应用Duwamish 7.0的系统架构. 其中参与关键数据流程的是web, business façade, business rules, data access. 上图形象说明了各层之间调用关系.

表示层(ASP.NET)设计

在整个解决方案中, 只有表示层含有ASPX文件, ASP.NET技术. 表示层的任务为将数据以一定格式展示给用户, 而且可以接受用户输入的数据, 处理用户的操作. 表示层由web forms, user control, code behide组成, 一般还包含所需要的其他资源文件. 设计及架构上应遵循以下原则:

1.         为了最大限度重用页面构图设计, 应将页面的主要公共元素(主菜单, 页眉页脚)构建为ASCX.

2.        应将主要逻辑模块建立在同一个ASCX中。例如用户注册的过程. 由独立的、嵌入到页面中的、模块来处理该逻辑。这样做的好处是隔离呈现逻辑与业务逻辑。

3.        ASPX页面仅仅是少量基本HTML, 表现基本页面构图。Code Behind仅仅操作所承载ASCX的显示与隐藏。 不包含业务逻辑

4.        应从System.Web.UI.Controls.WebControls.Page System.Web.UI.Controls.WebControls.UserControl扩展出派生类。本层下所有ASPXASCX均扩展该类。基类应包含安全信息,用户状态等基本信息。

5.        ASPX应可捕获所承载控件的用户事件。 用户事件一般代表ASCX生命周期的各个阶段。例如控件初始化,操作取消,操作完成,操作中止。

6.        呈现数据的集合时,应尽量使用Repeater.

数据实体设计

数据实体是系统所处理的核心业务对象。拿一个电子商务应用来说,核心业务对象就是商品,供货方,顾客,订单。数据实体一般为DataSet. 每个DataSet都是被强制定义了表,列以及关系和约束的内存数据库。 表结构的定义是可以和数据库中实际数据有差别的。各个层之间传送的数据就是单纯的DataSet。这样可以是各层对外开发的接口完全统一。 例如当用户要求查询所有某类别的商品时,数据层可以将结果填充进事先设计好的实体中。

业务层设计

业务层直接服务于表示层。为表示层提供所需数据。处理表示层的操作需求。实际上,业务层所担当的角色是表示层与数据访问层的中介。 将表示层的需求解析为数据层的数据操作。这应用了FACADE设计模式。即为子系统提供一个统一的接口以简化操作。在实际的设计中。 一般将业务层的类设计为各个核心子系统的各项操作的中心。 可降低系统层次之间的耦合度。 提高灵活性。

数据层设计

数据库直接对数据库操作。一般不应该包含任何业务逻辑。好的数据层设计应该是仅包含读写删改等基本操作。提供业务层所需要的数据。

命名规范

大小写形式

项目进行前应安排专门人员制定词汇表。开发成员选用词汇时应按照词汇表选用准确的词汇. 以达到风格统一的目的.

以下规则按照MSDN 推荐的样式表示下列标识符:

 

Identifier

Case

Example

Class

Pascal

AppDomain

Enum type

Pascal

ErrorLevel

Enum values

Pascal

FatalError

Event

Pascal

ValueChange

Exception class

Pascal

WebException

Note   Always ends with the suffix Exception.

Read-only Static field

Pascal

RedValue

Interface

Pascal

IDisposable  Note   Always begins with the prefix I.

Method

Pascal

ToString

Namespace

Pascal

System.Drawing

Parameter

Camel

typeName

Property

Pascal

BackColor

Protected instance field

Camel

redValue  

Note   Rarely used. A property is preferable to using a protected instance field.

Public instance field

Pascal

RedValue

Note   Rarely used. A property is preferable to using a public instance field.

 

大小写敏感设置

由于.NET平台是跨语言操作, 对于大小写敏感的语言和大小写不敏感的语言都要求适用, 所以绝对不能使用仅依靠大小写识别的标志符.

缩写形式

1.         不允许使用任何对于英文单词的简写或者缩写.例如将 GetWindow写成 GetWin.

2.        不允许使用省去元音字母的缩写形式.例如将Message写成Msg.

3.        不允许使用尚未被广泛采用的只用首字母的缩写词.

4.        使用约定俗称的首字母缩写来代替较长的名称. 例如 GetHtml.

5.        缩写词应当作一个单词使用, 即采用首字母大写其他字母小写的形式. 例如 SqlServer.

6.        如果缩写词只有两位字符. 应全部大写. 例如 System.Web.UI.

应遵守的通用规则

1.         必须使用拼写正确的英文单词。不允许使用汉语拼音或者其他任何形式的缩写。

2.        词汇必须完整。不允许使用任何简写形式。 例如不允许将Message写成Msg.

3.        如果名字代表复数意义,应使用其正确的复数形式。

4.        约定俗成的字母缩写,可作为一个单词使用。

5.        应尽量将标志符的意义描述清楚。即使用一个以上的单词来表示一项内容。

规避词汇

避免使用.NET namespace占用的词汇. 避免使用与关键字冲突的词汇:

关键字列表:

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.         全部单词首字母大写紧靠在一起。第一个单词也必须大写。只有一个单词也必须大写。不允许使用下划线连接。明明中一般不允许出现数字。(特殊情形除外)

2.        扩展名必须全部小写。

3.        应用程序缺省首页一定是Default.aspx

4.        允许使用修饰性的名词词组,动词-名词的支配结构词组来表示aspx文件名。(例如MemberDetails.aspx) aspx文件名必须用词准确。使用合适的单复数形式及

抱歉!评论已关闭.