应用程序设计/命名及编码规范方案
架构规范
总体设计
.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扩展出派生类。本层下所有ASPX与ASCX均扩展该类。基类应包含安全信息,用户状态等基本信息。
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
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文件名必须用词准确。使用合适的单复数形式及