ASP.NET開發規範

第一部分:界面設計標準 css

1.開發環境設置:屏幕設置爲800*600/1024*768 算法

2.界面設計原則:風格必須統一 數據庫

3B/S結構開發原則:使用框架/模板 數組

4.頁面使用表格(Table)進行格式設置。 安全

最外面的表格設置:width=778px align=center border=0 session

5.主頁面Body設置:bgcolor="#cccccc" 數據結構

6.框架子頁面Body設置:bottomMargin="0" leftMargin="0" 併發

7.對齊:文字(標籤)右對齊;數字(數據)右對齊;文字(數據)左對齊,比較短的能夠居中對齊;金額,需加上   千位符 框架

8.冒號必須是在中文輸入狀態下鍵入 函數

9.控件使用原則:儘量使用Html控件,須要提交而又不用在客戶端使用Javasrcipt的可使用Web控件

10.控件使用約定:

(1)控件外觀設置:style.css

i.i 連接類:

a:link {font-size: 12px;line-height: 20px;text-decoration: none; color: #666666}

     a:visited {font-size: 12px;line-height: 20px;color: #666666;text-decoration:

none;}

a:hover {font-size: 12px;line-height: 20px;color: #FF6600;text-decoration:

underline;}

a:active {font-size: 12px;line-height: 20px;color: #666666;text-decoration:

underline;}

i.ii 表格類:

td{font-size: 12px; line-height: 20px; text-decoration: none;}

i.iii 文本框類:

.inputPM{BORDER-RIGHT: #99ccff 1px solid; BORDER-TOP: #99ccff 1px solid;

BORDER-LEFT: #99ccff 1px solid; BORDER-BOTTOM: #99ccff 1px solid;

HEIGHT: 22px}

       i.iv datagrid類:

.dg_grid /* Grid-整體 */

{font-size:12px; border-style:solid; border-width:2px; border-color:White;

text-align:center; vertical-align:middle;}

.dg_header /* Grid-頁眉 */

{font-weight :bold ; color:#E7E7FF; background-color :#3366CC; text-align:center;

vertical-align:middle; height:25px;}

.dg_alter /* Grid-交替行 */

{background-color :AliceBlue; height:22px;}

.dg_item /* Grid-普通行 */

{color :Black; background-color:WhiteSmoke; height:22px;}

.dg_page /* Grid-頁導航 */

{color:Black; text-align:right; vertical-align:middle; height:22px;}

.dg_select{font-weight :bold ; color:White; background-color :#9471DE;} /* Grid-選擇行 */

(2)幾點補充:

ii.i   控件datagrid的數據顯示:文字(短)居中對齊;文字(長)左對齊;日期左對齊;數字左對齊;金額左對齊,千位符

ii.ii 控件text的長度MaxLength按數據結構要求設置

ii.iii 由於操做主要跟數據庫相關,因此控件類型能夠與數據表字段(field)類型造成對應,此處約定爲:

u 字段類型爲文本、數字時,控件使用文本框

u 字段類型爲布爾值時,控件使用單項選擇按鈕(checkbox控件)或下拉框

u 字段內容在固定的幾個值中選擇時(不論其類型),控件使用下拉框

u 字段類型爲日期時間時,控件使用文本框+按鈕(按鈕能夠選擇日期,按鈕.Value=」…」

u 字段爲其它表的外鍵,則分爲兩種狀況:

a)、若是是屬於基本資料的,控件使用下拉框。

b)、若是不是屬於基本資料的,控件使用文本框+按鈕(按鈕用於跳出查詢窗口,按說鈕.Value=」…」

u 數據操做窗口通常爲DataGrid+錄入框

a)DataGrid用於顯示數據

b)、錄入框用於輸入/顯示數據

c)、瀏覽窗口基本樣式,主要以表格形式顯示紀錄,單表控件使用DataGrid/DataList/Repeater,多表使用NestedDataGrid

第二部分:命名規範

1. 按鈕ID命名:btn+按鈕操做功能(如btnSave

2. 其它控件:

I. 與數據操做相關:其ID<.SPAN>爲相應的字段名稱,若是有多個控件對應一個字段,則按如下規範命名:

字段名+」_」+順序號(01開頭)

例子:頁面有一TextBox控件,對應着數據庫表中的RightGroup字段,則其ID應命名爲 RightGroup

若是頁面有二個TextBox控件,都對應着數據庫表中的PowerGroup字段,則其ID分別命名爲PowerGroup_01, PowerGroup_02,依此類推

II. 其它:前綴+用途功能(如txtInput,前綴請看錶一:

控件

前綴

控件

前綴

Form

frm

Class

cls/C

Module

mod

Label

lbl

LinkLabel

lnk

Button

btn

TextBox

txt

CheckBox

chk

RadioButton

rad

GroupBox

grp

PictureBox

pic

DataGrip

grd

ListBox

lst

CheckedListBox

clst

ComboBox

cbo

TreeView

tvw

ListView

lvw

TabControl

tab

DateTimePicker

dtp

Timer

tmr

Splitter

spl

ProgressBar

pbar

RichTextBox

rtf

ImageList

imgl

ToolBar

tlb

MenuItem

mnu

(表一)

3. 變量及常量命名規範:

I. 頁面及過程級變量:級別標識+數據類型前綴+<名詞|名詞組合>

A、頁面級變量:級別標識爲m (例子:dim mstrNewline as string)

B、過程級變量:級別標識爲 l (例子:dim lstrNewline as string)

II.頁面間變量:採用request傳遞獲取

命名原則:級別標識+數據類型前綴+<名詞|名詞組合>

級別標識爲p

例子:url=」XXXX.aspx?pstrLine=bbbbb&pintNum=11」

     Dim lstrLine as string=Request(「pstrLine」)

     Dim lintNum as integer=request(「pintNum」)

III. 全級變量:級別標識+數據類型前綴+<名詞|名詞組合>

A、級別標識:g(例子:dim gstrNewline as string)

B、由於在全部的頁面都能使用,因此須有足夠長的名稱以說明變量,並加上註釋

C、統一在模塊中定義

D、全級變量的定義必須通過項目主管的贊成後才能進行

IV. 通用變量:採用session賦值

a、命名原則:級別標識+數據類型前綴+<名詞|名詞組合>

b、 級別標識爲g(例子:session(「gstrNewline」)=」」)

c、 由於在全部的頁面都能使用,因此須有足夠長的名稱以說明變量,並加上註釋

d、 通用變量統一放在Global.asax中的Session_Start(sender,e)過程當中,初始值賦予空字符串。並在Session_End(sender,e)過程當中釋放掉。

例子:

Global.asax文件:

Sub session_star(byval sender as Object,byval e as EventArgs)

    Session(「gstrUser」)=」」

End sub

Sub session_End(byval sender as Object,byval e as EventArgs)

    Session(「gstrUser」)=nothing

End sub

e、通用變量的定義必須通過項目主管的贊成後才能進行

V. 數據類型前綴:

數據類型

前綴

數據類型

前綴

String

str

Date

dat

Boolean

bln

Short

sht

Decimal

dec

Long

lng

Integer

int

Byte

byt

Char

chr

Single

sgl

Double

dbl

Structure

udt

Object

obj

DataSet

ds

DataRow

dr

OleDbConnection

conn

SqlConnection

conn

OleDbCommand

cmd

SqlCommand

cmd

OleDbDataAdapter

da

SqlDataAdapter

da

OleDbDataReader

rdr

SqlDataReader

rdr

Crystal Report

rpt

(表二)

4. 過程(函數)命名規範:

I. 命名規範:級別標識+<動名詞結構>

II. 應用於單一頁面:級別標識爲p(例子:private function pDisdata())

III. 應用於所有頁面:級別標識爲g(例子:public function gDisdata())

5. 頁面命名規範:模塊標識+程序功能英文縮寫

I. 例子:有基本資料模塊,其模塊標識爲Base,程序使用的英文縮寫爲Unit,則頁面名稱爲BaseUnit

II. 此命名只能由項目主管或系統分析設定

6. 存儲過程命名規範:

I. 命名規範:[項目名稱前的兩個字母]+[程序使用英文縮寫]+[_]+[存儲過程功能標識]

II. 若是項目名稱是大寫,則轉換爲小寫

III. 例子:項目名稱爲DKERP,程序做用的英文縮寫爲Unit,存儲過程的功能是保存,則可命名爲dkUnit_Sav

IV. 存儲過程功能標識約定:

u 存儲過程功能爲保存的,其標識爲Sav

u 存儲過程功能爲刪除的,其標識爲Del

u 存儲過程功能爲查詢的,其標識爲Qry

u 存儲過程功能爲填充到控件的,其標識爲Back

u 存儲過程功能爲綁定下拉框控件的,其標識爲Dll

V. 存儲過程命名與規劃必須通過項目主管的贊成後才能進行

7. 類的命名規範:

I. 原則:[Cls]+<名詞|名詞組合|動名詞組合>,名詞|動詞的第一個字母大寫

II. 例子:ClsDataOperate

III. 公共類的定義與命名必須通過項目主管的贊成後才能進行

8. 模塊的命名規範:

I. 原則:[Mod]+<名詞|名詞組合|動名詞組合>,名詞|動詞的第一個字母大寫

II. 例子:ModDataConnection

III. 公共模塊的定義與命名必須通過項目主管的贊成後才能進行

9. 用戶控件命名規範:

I. 原則:[Url]+ <名詞|名詞組合|動名詞組合>,名詞|動詞的第一個字母大寫

II. 例子:UrlDataLoad

III. 用戶控件的定義與命名必須通過項目主管的贊成後才能進行

第三部分:編碼規範

1.註釋

A. 每一個頁面的開始必須有下面格式的註釋

’*********************************************

'頁面名稱:              frmStyleE

'做用/描述:            款式查詢

'輸入/發送:

'    strUserList()   被搜索的用戶列表。

'    strTargetUser   要搜索的用戶名。

'輸出/返回格式:        rasUserList 數組中rsTargetUse的第一次出現的索引。

'                       若是目標用戶沒找到,返回-1

'原做者:             Raymnod Fok 2002-1-1

'原做日期:             

'修改者:            

'修改日期:             

'備註:              

'************************************************

注:左對齊,中間隔開4Tab位(每一個Tab縮進4位)

B. 全部變量及常量均要有註釋

C. 每一個過程(函數)也應該有註釋,以描述這個過程(函數)的功能,如下是註釋的格式

'***********************************************

'函數名稱:              intFindUser

'目的:             在用戶列表數組中找出一個指定用戶的第一次出現位置。

'輸入/發送:        

'   strUserList()     被搜索的用戶列表。

'   strTargetUser     要搜索的用戶名。

'輸出/返回格式:    rasUserList 數組中rsTargetUser的第一次出現的索引。

'                   若是目標用戶沒找到,返回-1

'參數:                  intCol 須要得到內容的當前文本

'原做者:            Raymnod Fok 2002-1-1

'原做日期:             

'修改者:           

'修改日期:             

'備註:                 

'************************************************

Function pintFindUser (strUserList() As String, strTargetUser As String)As Integer

Dim i As Integer           ' 循環計數器。

           Dim blnFound As Integer    ' 目標尋找標誌。

              intFindUser = -1

              i = 0

              While i <= Ubound(strUserList) and Not blnFound

                  If strUserList(i) = strTargetUser Then

                     blnFound = True

intFindUser = i

                  End If

              Wend

End Function

D. 過程(函數)或存儲過程內部的註釋方法

應按功能塊分,註釋應寫在每一小段算法或一個小功能以前,不要與代碼、註釋搞成一團

E. 如果在程序代碼後面寫上註釋,則在代碼語句後面三個Tab位開始寫註釋

F. 若是註釋是針對程序中的部分代碼,需註明該段代碼的開始和結束部分

G. 存儲過程也應該寫上註釋,如下是存儲過程註釋的格式

/*

存儲過程名:              TSellMain_Qry

做用:查詢表              Sell_SellRecordMain的數據

輸入:               

輸出:                  Sell_SellRecordMain的全部數據

原做者:                  quanysq

日期:               

修改者:                 

修改日期:           

備註:               

*/

CREATE PROCEDURE TSellMain_Qry

AS

select * from Sell_SellRecordMain

GO

2.格式化代碼

A. 嵌套塊應有嚴格的層次縮進(每一層分別縮進1Tab,注:每一個Tab4個英文字符)

B. 一個過程或函數不能太長,大體上應限制在200行內,不然應將其拆分爲多個過程或函數

C. 當產生長字符串時,使用下劃線鏈接字符產生多行代碼

D. 對數據庫進行訪問數據庫、保存、刪除、顯示數據等操做時,統一使用公用類。

E. 在製做界面時,要對照標準,作到界面與流程要求達到一致,界面也要符合標準的規範

F. 在讀取數據顯示到界面時,要對照流程的要求與數據庫中的表和字段的有效性瞭解清楚,作到顯示的數據徹底正確

G. 在處理操做界面數據時,要對照數據庫中數據有效性達到一致,數據與流程達到一致,並保證數據有效。數據要合理性(如:數量應該小於0或大於0,小數點等等)

H. 在保存數據處理中,要作到所見即所得,就是保存的數據要與界面數據相一致,並對照流程切保數據符合流程的要求。

I. 在讀取數據顯示到界面、界面數據操做、保存數據操做要多使用過程或函數,儘可能減小控制點,使程序系統化

J. 對於變量的命名,切記要規範

K. 在程序中要多加註釋,使程序更加清楚

L. 在退出頁面時,必須在Page_Disposed(sender,e)事件中釋放掉會駐留在內存的變量,主要是Session變量、DataSet變量

M. 流程圖必須簡要地規劃出程序的流程,其中列出實現該功能的模塊的名稱

N. 流程圖命名:與程序名相同

O. TextBox 控件的Enabled屬性爲False時,其背景顏色必須設爲灰色(顏色名稱: Silver)

P. 切換當前的控件,除了VB.net自己默認的Tab鍵外,再加上Enter

Q. 關於併發控制,通常採起事務+鎖的方式處理,有三種狀況:

a. 鎖定整個表,一般發生在查詢大量數據時,使用TABLOCKX提示.

示例:

CREATE PROCEDURE TSellMain_Qry

    AS

        Begin transaction

           select * from Sell_SellRecordMain with (TABLOCKX)

           if @@ERROR > 0

               ROLLBACK

           Else

               COMMIT     ----提交或回滾事務時釋放鎖

GO

b. 在更新表中全部記錄時申請排它鎖,防止在提交事務以前記錄受其餘用戶的影響.

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

示例:

CREATE PROCEDURE Ttesthr_Update

    AS

        Begin transaction    --開始事務

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE         --申請排它鎖,防止在提交事務以前記錄受其餘用戶的影響

           Update testhr set hrcode=’aaa’

           if @@ERROR > 0

               ROLLBACK

           Else

               COMMIT     ----提交或回滾事務時釋放排它鎖

GO

c. 若是隻是更新表中一行或者多行記錄時使用行級鎖.

With (RowLock)

示例:

CREATE PROCEDURE Ttesthr_Update

    AS

        Begin transaction    --開始事務

           Update testhr with (rowlock) set hrcode=’aaa’ where hrcode=’bbb’

           if @@ERROR > 0

               ROLLBACK

           Else

               COMMIT     ----提交或回滾事務時釋放排它鎖

GO

R. 程序中處理錯誤通常使用如下結構

try

    …代碼

catch

    …錯誤信息

finally

    …釋放有可能駐留在內存中的變量

end try

第四部分:測試規範

1. 在測試前,以概要設計說明書.詳細設計說明書做爲總的提綱,選擇合適的輸入輸出數據.

2. 按功能模塊分別測試

3. 在測試過程當中,首先須要對各子單元過程進行測試,在各子單元過程測試完畢後,再對各模塊(包括各子單元過程之間的接口)進行測試,處理好各模塊之間的接口,最後對系統進行測試和維護。

4. 測試中須要加以注意的問題:

a. 數據類型不匹配.

如: 姓名         string             旅行目的地   string

性別         string             旅行時間     date

工做單位     string             (//   yy/mm/dd)

身份證號碼   long int           定票/取票     boolean

b. 數據超出規定範圍

如:性別只能是;身份證號碼按規定必須是13;旅行時間必須在定票的當天過一天之後; 等等

c. 數據庫限定必須輸入的在程序中有沒有檢驗?

d. 數據庫限定值爲惟一的在程序中有沒有檢驗?

e. 控件datagrid的分頁程序是否已寫好,有沒有檢驗?

f. 控件datagrid各列的寬度是否已分配好?

g. 連接是否正確?

h. 代碼是否已經簡潔,會不會留下一些安全隱患?

i. 其它意料以外有沒有必定的預防代碼?

j. 是否符合需求?需求是否明確?

5. 測試原則:若是不能讓本身滿意的程序,他人也同樣不會滿意

相關文章
相關標籤/搜索