任何一個項目或者系統開發(fā)之前都需要定制一個開發(fā)約定和規(guī)則,這樣有利于項目的整體風格統一、代碼維護和擴展。由于Web項目開發(fā)的分散性、獨立性、整合的交互性等,所以定制一套完整的約定和規(guī)則顯得尤為重要。本文檔將定制一系列約定和規(guī)則,他們分別包括組件團隊、文件夾命名規(guī)則、文件名命名規(guī)則、程序代碼編程風格、數據庫設計約定。這些規(guī)則和約定需要與開發(fā)人員、設計人員和維護人員共同討論定制,將來開發(fā)都將嚴格按規(guī)則或約定開發(fā)。每個團隊開發(fā)都應有自己的一套規(guī)范,一個優(yōu)良可行的規(guī)范可以使我們工作得心應手事半功倍,這些規(guī)范都不是唯一的標準不存在對與錯,也許有些地方與你當前使用的習慣相駁,很多地方都有爭議。比如很多人習慣設計數據庫時采用自動增長字段,而有些人(像我這樣的人)就堅決反對,各自都有比較充分的理由闡述自己的觀點,所以只好根據具體情況來采用相應的策略。
非常明顯在Web項目開發(fā)中有前后臺開發(fā)之分,前臺開發(fā)主要是指非程序編程部分,主要職責是網站AI設計、界面設計、動畫設計等。而后臺開發(fā)主要是編程和網站運行平臺搭建,其主要職責是設計網站數據庫和網站功能模板的實現。下面的這些規(guī)范主要是從這2個方面來定制的,這些規(guī)范是我這幾年學習工作中總結的一點小經驗,本文檔比較適合中小型網站或者Web項目的開發(fā)規(guī)范。
1.組建開發(fā)團隊
在接手項目后的第一件事是組建團隊。根據項目的大小團隊可以有幾十人,也有可以是只有幾個人的小團隊,在團隊劃分中應該含有6個角色,這6個角色是必須的,分別是項目經理,策劃,美工,程序員,代碼整合員,測試員。也許你的團隊還沒有6個人,沒有關系一個人可以有多個角色,比如項目經理還可以有策劃這個角色,如程序員還可以含有代碼整合和測試這2個角色,如果你的項目夠大人數夠多那就分為6個組,每個組分工再來細分。下面簡單介紹一下這6個角色的具體職責。
項目經理,項目總體設計,開發(fā)進度的定制和監(jiān)控,定制相應的開發(fā)規(guī)范,負責各個環(huán)節(jié)的評審工作,協調各個成員(小組)之間開發(fā)。策劃,提供詳細的策劃方案和需求分析。還包括后期網站推廣方面的策劃。美工,根據策劃和需求設計網站AI,界面,Logo等。程序員,根據項目總體設計來設計數據庫和功能模塊的實現。代碼整合員,負責將程序員的代碼和界面融合到一起,代碼整合員可以制作網站的相關頁面,測試員,負責測試程序。
2.開發(fā)工具
Web開發(fā)工具主要分為3部分,第一部分是網站前臺開發(fā)工具,第二部分是網站后臺開發(fā)環(huán)境,第三部分是項目管理和輔助軟件。下面分別簡單介紹這三部分需要使用的軟件。
網站前臺開發(fā)主要是指Web界面設計。包括網站整體框架建立、常用圖片、Flash動畫設計等等,主要使用的相關軟件是:Adobe Illustrator 、Adodb Photoshop、Dreamweaver MX、Flash MX等。
網站后臺開發(fā)主要指網站動態(tài)程序開發(fā)、數據庫建模,主要使用的相關軟件是: PowerDesigner(數據庫建模),PowerDesigner在數據庫設計方面應用非常強大,用它可以快速創(chuàng)建數據庫概念和物理模型,我最喜歡的還是它生成數據庫Report的功能太方便了,設計數據庫強烈推薦用它。Rational Rose(程序建模),如果你的項目功能模塊不是特別復雜那就剩了它吧,這樣會節(jié)省一些時間和開發(fā)的復雜度,不過我個人認為不管是大項目還是小項目都應該畫畫Rose圖。
網站項目管理主要指對開發(fā)進度和代碼版本的控制。開發(fā)進度用Microsoft Project來制定,代碼版本控制采用Visual SourceSafe,當然還有其他的選擇比如CVS和Rational ClearCase。網站測試采用VS.net的附帶工具Microsoft Application Center Test,它可以進行并行、負載測試等。程序文檔編寫采用Word,如果你非常懷舊用WPS也可以。
3.網站開發(fā)流程
在項目開始實施之前應該有一個工作步驟也就是工作流程,在項目開發(fā)中最需要時間的是總體設計和系統測試,而程序編寫代碼所占的時間并不多,但有的團隊就急于開發(fā)寫代碼,先把程序寫出來再說,沒有注重評審和測試這2個環(huán)節(jié),結果造成返工,我在一家比較大的公司中都遇到多次這種情況。所以項目來了不要急于開工寫代碼,應該一步一步慢慢來,只有走的慢才能走得穩(wěn)走得遠。圖1的開發(fā)流程比較好地體現開發(fā)的整個環(huán)節(jié)。
從圖1可以看到2條主線,這2條主線分別是前臺開發(fā)和后臺開發(fā)。前后臺開發(fā)在項目開發(fā)早期互相沒有交叉,當然不是絕對沒有,Web策劃和需求分析都是互相有關系的,一個是網站表現形式和風格的策劃另一個是網站功能的策劃,它們是衣服和軀干的關系。到了開發(fā)后期就需要把界面和功能模塊結合起來形成一個統一,也就即將發(fā)布的網站。
4.數據庫開發(fā)
數據文件命名采用系統名+_+文件類型,比如系統名為kupage,則數據庫文件命名為kupage_database.mdf,有的數據庫文件有多個,比如SQL Server就有2個,一個是數據庫文件,另一個是日志文件,那么他們的文件命名分別為kupage_database.mdf,kupage_log.log。文件名全部采用小寫。
數據庫表命名規(guī)范,表名長度不能超過30個字符,表名中含有單詞全部采用單數形式,單詞首寫字母要大寫,多個單詞間不用任何連接符號。若庫中有多個系統,表名采用系統名稱+單詞或多個單詞,系統名是開發(fā)系統的縮寫,系統名稱全部采用小寫英文字符,如bbsTitle,bbsForumType。若庫中只含有一個系統,那么表名僅用一個單詞或多個單詞。單詞選擇能夠概括表內容的一個或多個英文單詞,如UserInfo,UserType。關連表命名規(guī)則為Re_表A_表B,Re是Relative的縮寫,如:Re_User_ArticleType, Re_User_FormType。
數據庫字段命名規(guī)范,數據庫字段名全部采用小寫英文單詞,單詞之間用”_”隔開,命名規(guī)則是表別名+單詞,如:user_name,user_pwd。表別名規(guī)則,如果表名是一個單詞,別名就取單詞的前4 個字母;如果表名是兩個單詞,就各取兩個單詞的前兩個字母組成4 個字母長的別名;如果表的名字由3 個單詞組成,你不妨從頭兩個單詞中各取一個然后從最后一個單詞中再取出兩個字母,結果還是組成4 字母長的別名。
視圖名采用規(guī)則View_表A_表B_表C,View表示視圖。這個視圖由幾個表產生就用”_”連接幾個表的名,如果表過多可以將表名適當簡化,但一定要列出所有表名。
存儲過程命名規(guī)則P_表名_存取過程名(縮寫),比如P_User_Del,P_ArticleType_AddData。
SQL語句編寫規(guī)則,關鍵字必須大寫,其他書寫按上述命名規(guī)則,比如:
SELECT user_id, user_name FROM User WHERE user_id = ‘tom’
5.文件夾文件名命名規(guī)范
文件夾命名一般采用英文,長度一般不超過20個字符,命名采用小寫字母。除特殊情況才使用中文拼音,一些常見的文件夾命名如:images(存放圖形文件),flash(存放Flash文件),style(存放CSS文件),scripts(存放javascript腳本),inc(存放include文件),link(存放友情鏈接),media(存放多媒體文件)等。
文件名稱統一用小寫的英文字母、數字和下劃線的組合。命名原則的指導思想一是使得你自己和工作組的每一個成員能夠方便的理解每一個文件的意義,二是當我們在文件夾中使用“按名稱排例”的命令時,同一種大類的文件能夠排列在一起,以便我們查找、修改、替換、計算負載量等等操作 。
1、圖片的命名原則名稱分為頭尾兩部分,用下劃線隔開,頭部分表示此圖片的大類性質例如廣告、標志、菜單、按鈕等等。
放置在頁面頂部的廣告、裝飾圖案等長方形的圖片取名: banner
標志性的圖片取名為: logo
在頁面上位置不固定并且?guī)в墟溄拥男D片我們取名為 button
在頁面上某一個位置連續(xù)出現,性質相同的鏈接欄目的圖片我們取名: menu
裝飾用的照片我們取名: pic
不帶鏈接表示標題的圖片我們取名: title
下面是幾個范例: banner_sohu.gif 、banner_sina.gif、 menu_aboutus.gif 、menu_job.gif、 title_news.gif、 logo_police.gif、 logo_national.gif 、pic_people.jpg 。
2、動態(tài)語言文件命名規(guī)則性質_描述,描述可以有多個單詞,用”_”隔開,性質一般是該頁面得概要。
范例:register_form.asp,register_post.asp,topic_lock.asp
6.程序代碼編程規(guī)范
一個良好的程序編碼風格有利于系統的維護,代碼也易于閱讀查錯。在此只討論ASP的編程風格和約定。在ASP中所有變量是弱變量,無需定義就可以直接使用,而且代碼不區(qū)分大小寫。但其他語言一般這些都要定義的,為了養(yǎng)成良好的編程習慣,編寫代碼務必按照一下規(guī)則。
1、每個變量名必須定義,在ASP文件的最開始添加語句,強制定制每個變量。
2、出于易讀和一致性的目的,在代碼中使用以下變量命名約定:
子類型
前綴
示例
Boolean
bln
blnFound
Byte
byt
bytRasterData
Date (Time)
dtm
dtmStart
Double
dbl
dblTolerance
Error
err
errOrderNum
Integer
int
intQuantity
Long
lng
lngDistance
Object
obj
objCurrent
Single
sng
sngAverage
String
str
strFirstName
3、程序代碼需要有縮進,縮進采用鍵盤Tab鍵,不采用空格鍵。并且”=”或者鏈接字符串時需要左右空一格,如下:
4、函數過程編寫的約定。函數或者過程命名采用動作+名詞,每個函數需要給出相應的注釋,函數功能,傳入變量,以及作者和修改相關信息。如下面函數:
<%
‘[功能] 返回一個參數的值
‘[參數] strParameterName 參數名稱
‘[作者] icefire 2002/8/20 am
Function GetParameterValue(strParameterName)
Dim objRS, strSQL, strParameterValue
strSQL = "SELECT ParameterValue FROM damsParameters WHERE ParameterName = ‘" & strParameterName & "‘"
.
.
.
GetParameterValue = strParameterValue
Set objRS = Nothing
End Function
5、ASP內置對象區(qū)分大小寫。如下代碼片斷
strUserName = Request.Form(“UserName”)
Set conn = Server.CreateObject("ADODB.Connection")
6、數據庫連接一個庫只能有一個數據庫連接文件,創(chuàng)建數據庫對象得原則是盡可能晚地打開數據庫,盡可能早地關閉數據庫。創(chuàng)建數據庫對象調用統一地創(chuàng)建函數。如下:
Sub OpenConn(ByRef conn)
Dim strDBPath, strDBConnection
strDBPath = Server.MapPath("database/tax.mdb")
strDBConnnection = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & strDBPath
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open strDBConnnection
End Sub
7、當一個對象不在使用時要釋放對象資源,比如objFSO,objRS對象等。采用統一函數調用。函數如下:
Sub CloseObj(ByRef obj)
If IsObject(obj) Then
obj.Close
Set obj = nothing
End If
End Sub
8、時間全部以字符串的形式保存到數據庫中,這樣做能夠是日期在不同的數據庫中都能良好地保存,也方便數據庫地遷移。時間用14位字符串保存,日期用8位字符串保存。