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