项目相关定义
每个团队开发都应有自己的一套规范,一个优良可行的规范可以使我们工作得心应手事半功倍。由于此项目开发的分散性、独立性、整合的交互性等,为了有利于项目的整体风格统一、代码维护和扩展,所以定制了这套简单的约定和规则。
本文档将定制一系列约定和规则,他们分别包括代码目录约定、文件夹命名规则、文件名命名规则、程序代码编程风格、数据库设计约定。这些规则和约定需要与开发人员、设计人员和维护人员共同讨论定制,将来开发都将严格按规则或约定开发
2.1.1项目目录约定
****电信[数字***]英文DigitizeSLSys
----------Project目录(即DigitizeSLSys)
|-----------Inc/ 公用服务器端函数定义(整个项目公用)
|-----------JsInc/ JavaScript共用函数(整个项目公用)
|-----------Database/ 数据库相关文件(如为sqlserver,把*.sql放到这里面)
|-----------Include / 引用头文件(top等,整个项目公用)
|-----------首页相关页面程序代码文件
|-----------模块目录/
(每个模块都按此约定)
| |---------Inc/ 公用服务器端函数定义(本模块公用,比如数据库连接)
| |---------JsInc/ JavaScript共用函数(本模块公用)
| |---------UpPic/ 上传图片的保存目录
| |---------Upfile/ 上传文件的保存目录
| |---------Images/ 图片的目录
| |---------Css/ 页面css风格目录
| |---------Include/ 引用头文件(top等)
| |---------页面程序代码文件
|-----------Admin/ 管理的代码
|
|---------Inc/ 公用服务器端函数定义(本模块公用,比如数据库连接)
| |---------JsInc/ JavaScript共用函数
| |---------Images/ 图片的目录
| |---------Css/ 页面css风格目录
| |---------Include/ 引用头文件(top等)
| |---------页面程序代码文件
2.1.2项目开发环境
体系结构:
|
B/S
|
服务器运行环境:
|
Microsoft Windows 2000 Server/Windows 2003 server
|
WEB服务器:
|
IIS5.0/IIS6.0
|
开发平台:
|
Microsoft Visual Studio.NET 2005 + Dreamweaver8
|
|
ASP.NET
|
开发语言:
|
C#
|
数据库系统:
|
Microsoft SQL Server 2005
|
关键技术:
|
C# + Ajax
|
代码管理:
|
Microsoft Visual SourceSafe 2005
|
2.1.3项目代码约定
2.1.3.1文件命令约定(包括图片文件)
1. 文件名只能用英文字母,第一个字母大写,每个单词第一个字母大写,长度不要超过20字符。例:NewsLogo.gif
2. 代码和界面分离:每一个页面的界面用*.aspx命名,实现代码用*.cs。
3. 类别相同文件的命名分为头和尾两部分,如:
RegisterForm.aspx
RegisterPost.aspx
LogoNews.gif
LogForum.gif
这样是为了方便如果我们按文件名称排列的时候,相同类别的文件能够在一起。
2.1.3.2编码约定
1. 数据库连接符:
Web.config文件:
<?
xml
version
=
"1.0"encoding="utf-8"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web
管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments
中,该文件通常位于
/Windows/Microsoft.Net/Framework/v2.x/Config
中
-->
<
configuration
>
<
appSettings
>
<
add
key
=
"DataConnectionString"value="workstation id=edg;packet size=4096;user id=Test;data source=localhost;persist security info=False;initial catalog=TestDB;password=123"/>
</
appSettings
>
<
connectionStrings
/>
<
system.web
>
<!--
设置 compilation debug="true" 将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<
compilation
debug
=
"true" />
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<
authentication
mode
=
"Windows" />
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
-->
<
customErrors
mode
=
"RemoteOnly"defaultRedirect="GenericErrorPage.htm">
<
error
statusCode
=
"403"redirect="NoAccess.htm" />
<
error
statusCode
=
"404"redirect="FileNotFound.htm" />
</
customErrors
>
</
system.web
>
</
configuration
>
2. 实际调运的
ADO.NET运用
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.Data.SqlClient;
/********************************************************************************
**
作者: Andy Lu
**
创始时间:2007-02-13
**
修改人:Andy Lu
**
修改时间:2007-02-13
**
描述:
**
主要用于用户注册
*********************************************************************************/
///
<summary>
///
用户注册类(用户注册,并返回ID)
///
</summary>
public
partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//VS2003
用:System.Configuration.ConfigurationSettings.AppSettings
SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings.Get("DataConnectionString"));
Conn.Open();
SqlCommand CmdInsert = new SqlCommand("Users_Insert", Conn);
CmdInsert.CommandType = CommandType.StoredProcedure;
//VS2003
只用:CmdInsert.Parameters.Add
CmdInsert.Parameters.AddWithValue("@UserType", UserType.Text.ToString());
CmdInsert.Parameters.AddWithValue("@UserName", UserName.Text.ToString());
CmdInsert.Parameters.AddWithValue("@UserPassWord", UserPassWord.Text.ToString());
CmdInsert.Parameters.AddWithValue("@UserEmail", UserEmail.Text.ToString());
SqlParameter parmReturnValue = new SqlParameter("@Userid", SqlDbType.Int);
int intAuthorCount;
parmReturnValue.Direction = ParameterDirection.Output;
CmdInsert.Parameters.Add(parmReturnValue);
SqlTransaction Trans = Conn.BeginTransaction();
try
{
CmdInsert.Transaction = Trans;
CmdInsert.ExecuteNonQuery();
intAuthorCount = (int)CmdInsert.Parameters["@Userid"].Value;
Trans.Commit();
Response.Write("<script>alert('
祝贺您!用户添加成功!');</script>"
);
Response.Write(intAuthorCount);
CmdInsert.Dispose();
Conn.Close();
}
catch (Exception Err)
{
Response.Write(Err.Message);
}
3. 过程函数
:
-- ================================================
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Andy Lu
-- Create date: 2007-2-12 10:46
-- Description:
用户注册
--
参数
-UserId
:用户
ID
;
--
参数
-UserType
:用户类型;
--
参数
-UserName
:用户名称;
--
参数
-UserPassWord
:用户密码;
--
参数
-UserEmail
:用户邮箱;
-- =============================================
CREATE
PROCEDURE [dbo].[Users_Insert]
@UserId int output,
@UserType int,
@UserName nvarchar(50),
@UserPassWord nvarchar(50),
@UserEmail nvarchar(50)
AS
begin tran
INSERT INTO [UserInfo]
(
[usertype],
[username],
[userpassword],
[UserEmail]
)
values
(
@UserType,
@UserName,
@UserPassWord,
@UserEmail
)
if
@@error<>0 goto error
set
@UserId=@@identity
Commit
tran
return
--
事务处理
ERROR:
set @UserId = 0
rollback tran
go
2.1.3.3变量约定
2.1.3.3.1变量约定
每个变量第一个字母小写,以后每个单词第一个字母大写。
出于易读和一致性的目的,变量名字的前缀定义如下:
子类型
|
前缀
|
示例
|
Boolean
|
bln
|
blnFound
|
Byte
|
byt
|
bytData
|
Date (Time)
|
dtm
|
dtmStart
|
Double
|
dbl
|
dblTolerance
|
Error
|
err
|
errOrderNum
|
Integer
|
i
|
iQuantity
|
Long
|
l
|
lQuantity
|
Object
|
obj
|
objCurrent
|
Single
|
sng
|
sngAverage
|
String
|
str
|
strFirstName
|
Array
|
arr
|
arrName
|
2.1.3.3.2变量格式
格式如下
:
string
strStfId = Session["UserId"].ToString().Trim();
string
strStfId = Request.QueryString.GetValues("StfId").GetValue(0).ToString();
2.1.3.3.3控件约定
建议是使用控件名简写作为前缀,并且简写的首字母小写,符合Camel规范。
格式:控件名简写+英文描述,英文描述首字母大写
主要控件名简写对照表
序号
|
控件名
|
控件简写
|
备注
|
1
|
Label
|
lbl
|
lblId
|
2
|
TextBox
|
txt
|
txtName
|
3
|
Button
|
btn
|
btnOk
|
4
|
CheckBox
|
chk
|
chkSex
|
5
|
RadioButton
|
rdo
|
|
6
|
CheckBoxList
|
chklst
|
|
7
|
RadioButtonList
|
rdolst
|
|
8
|
ListBox
|
lst
|
|
9
|
DropDownList
|
ddl
|
|
10
|
DataGrid
|
dg
|
|
11
|
DataList
|
dl
|
|
12
|
Image
|
img
|
|
13
|
Table
|
tbl
|
|
14
|
Panel
|
pnl
|
|
15
|
LinkButton
|
lnkbtn
|
|
16
|
ImageButton
|
imgbtn
|
|
17
|
Calender
|
cld
|
|
18
|
AdRotator
|
ar
|
|
19
|
RequiredFieldValidator
|
rfv
|
|
20
|
CompareValidator
|
cv
|
|
21
|
RangeValidator
|
rv
|
|
22
|
RegularExpressionValidator
|
rev
|
|
23
|
ValidatorSummary
|
vs
|
|
24
|
CrystalReportViewer
|
rptvew
|
|
2.1.3.4数据库约定
2.1.3.4.1命名约定
1. 库的命名:只能用英文字母,第一个字母大写,每个单词第一个字母大写,长度不要超过20字符。
2. Table命名约定:只能用英文字母,第一个字母大写,每个单词第一个字母大写,长度不要超过30字符。
3. 字段命名:只能用英文字母,第一个字母小写,每个单词第一个字母大写,长度不要超过30字符。
2.1.3.4.1连接库约定
1.
在程序连接库的时候请不要用sa账号,请用为每一个库单独添加的user账号连接。也就是说每建一个新库,要单独给他一个是用账号,这个帐号提供给程序中用。
2.
在程序中请使用ADO.NET连接
2.1.3.5 注释
2.1.3.5.1头文件注释
在代码文件的头部进行注释,标注出创始人、创始时间、修改人、修改时间、代码的功能,这在团队开发中必不可少,它们可以使后来维护/修改的同伴在遇到问题时,在第一时间知道他应该向谁去寻求帮助,并且知道这个文件经历了多少次迭代、经历了多少个程序员的手。例如:
/********************************************************************************
**
作者: Andy Lu
**
创始时间:2007-02-13
**
修改人:Andy Lu
**
修改时间:2007-02-13
**
描述:
**
主要用于用户注册
*********************************************************************************/
注:
我们甚至可以在这段文件头注释中加入版权信息、文件名、版本信息等。
2.1.3.5.2函数、属性、类等注释(可扩充)
请使用
///三斜线注释,这种注释是基于XML的,不仅能导出XML制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以protected,protected Internal,public声明的定义注释请都以这样命名方法。
比如:
///
<summary>
///
用户注册类(用户注册,并返回ID)
///
</summary>
2.1.3.5.3逻辑点注释
在我们认为逻辑性较强的地方加入注释,说明这段程序的逻辑是怎样的,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除
BUG。在注释中写明我们的逻辑思想,对照程序,判断程序是否符合我们的初衷,
如果不是,则我们应该仔细思考修改的是注释还是程序了。
2.2源文件管理
所有网站相关的源文件(包括文档,图片等)均放到Microsoft Visual SourceSafe中统一管理。
源文件修改前需要进行check out操作,然后进行操作,禁止手动更改本地源文件只读属性。修改完毕后,进行check in操作,更新源文件,如有说明的必要,请在check in的时候写上注释说明。