ASP開發(fā)規(guī)范要求

字號:


    為了規(guī)范程序代碼編寫,提高代碼可讀性,降低后期維護(hù)成本,提高辦公效率,建議以后編寫的程序按以下幾條規(guī)范進(jìn)行:
    一、 統(tǒng)一VBSCRIPT和ASP程序編寫規(guī)范:
    (一)變量命名規(guī)則:
    由于在ASP和VBSCRIPT中因?yàn)椴恍枰暶髯兞?,同時不能聲明變量的類型,但為了提高代碼的可讀性,養(yǎng)成好的開發(fā)習(xí)慣,對于本系統(tǒng)開發(fā)的變量命名統(tǒng)一規(guī)則如下:
    1. 使用Dim、Public、Private聲明變量;
    例如:Dim iStudentNum
    2. 變量類型的體現(xiàn):
    a、 整型變量:以小寫字母i開頭,后面跟變量標(biāo)示符,英文單詞的第一個字母大寫。
    例如:下面聲明一個存儲數(shù)據(jù)庫記錄多少的變量
    Dim iResordsetNumber
    b、 單精度實(shí)體變量:以小寫字母f開頭,后面跟變量標(biāo)示符,英文單詞的第一個字母大寫。
    c、 雙精度實(shí)體變量:以小寫字母d開頭,后面跟變量標(biāo)示符,英文單詞的第一個字母要大寫。
    d、 字符型變量:以小寫字母s開頭;
    e、 布爾型變量:以小寫字母b開頭;
    f、 數(shù)組變量:數(shù)組類型+“_”+“Array”+“_”+“變量標(biāo)示符”
    例如:定義一個存儲學(xué)生成績的數(shù)組(存儲單精度實(shí)體類型變量)
    Dim f_Array_StudentMark
    3. 變量標(biāo)示符要符合標(biāo)示符標(biāo)準(zhǔn),同時容易理解,盡量使用英文單詞來代替,盡量避免使用縮寫或簡寫。
    例如:存儲校友通訊錄的字符串變量定義為:
    Dim sSchoolfellowAddressList;
    雖然這樣定義在輸入的時候比較麻煩,但是,它大大提高了程序的可讀性,見其變量命名就知其意。在做變量查找的時候也比較方便。 速度和性能總是不能兩全,為了方便后者我們也就只有犧牲速度。
    4.在變量定義后面加變量功能定義的注釋。
    (二)常量命名規(guī)則:
    類型體現(xiàn)和上面一樣,不一樣的地方是,所有后面的標(biāo)示符全部大寫,例如:
    定義一個存儲語言種類的的字符型常量:
    Const sLANGUAGE_TYPE=”Chinese”
    (三)功能函數(shù)、過程命名規(guī)則:
    1. 使用Function聲明函數(shù),用Sub聲明過程;
    2. 函數(shù)名或過程名的第一個字母大寫,且后面的每個單詞第一個字母大寫。
    例如:
    Function CheckValidityOfInput(sStuentMark)
    ‘此處寫代碼
    …………
    End Function
    3. 函數(shù)名或過程名要容易讀,簡單明了。
    4. 在函數(shù)前面加注釋,說明函數(shù)功能、參數(shù)說明、創(chuàng)建日期、修改日期、修改原因、創(chuàng)建人、修改人等相關(guān)信息。
    (四)代碼縮進(jìn)標(biāo)準(zhǔn):
    為了提高代碼的美觀型和易讀性,在此提出代碼編寫的版面格式:區(qū)間與區(qū)間之間以一個為間距。
    例如:
    ‘***********************************************************
    ‘功能:檢測輸入字符串中的單引號,如果有則把原來的一個單引號變成兩
    ‘ 個單引號,兩個變成四個,依次類推,從而避免SQL語句執(zhí)行錯誤。
    ‘創(chuàng)建人:XXXX
    ‘創(chuàng)建時間:2002-7-6
    ‘修改時間:
    ‘修改原因:
    ‘修改人:
    ‘輸入?yún)?shù)說明:sInputString:需要進(jìn)行單引號檢測的字符串
    ‘***********************************************************
    Function CheckValidityOfInput(sInputString)
    Dim iCirculationControl ‘控制循環(huán)
    Dim sApartString ‘分離字符檢測
    Dim iLenOfInput ‘輸入字符長度
    iLen= Len(Trim(sInputString))
    For iCirculationControl = 1 To iLen
    If Mid(sInputString, iCirculationControl, 1) <>"'" Then
    sApartString = sApartString & _
    Mid(Trim(sInputString), iCirculationControl , 1)
    Else
    sApartString = sApartString & "''"
    End If
    Next
    CheckValidityOfInput = sApartString
    End Function
    二、 統(tǒng)一JavaScript程序編寫規(guī)范:
    JavaScript的命名規(guī)則和上面大部分相同,唯一不同的地方是:變量使用Var來聲明,在聲明結(jié)束后以分號(;)結(jié)束。
    函數(shù)的代碼要求層次清楚,該寫在下一行的地方盡量往下一行寫,不要在一行中完成所有代碼,這樣看起來不容易,檢查錯誤也特別費(fèi)時。
    在寫函數(shù)的時候記著加注釋內(nèi)容,以便以后維護(hù)時快速了解程序功能。
    下面是一個JavaScript程序:
    三、 系統(tǒng)性能提高,代碼規(guī)范:
    1.在ASP頁面內(nèi),凡是使用CreageObject()創(chuàng)建的對象(Com、Recordset等),對于這些變量,應(yīng)當(dāng)在該頁結(jié)束進(jìn)行對象釋放:即
    Set 對象變量名=Nothing
    2.數(shù)據(jù)庫打開以后在不用的時候(通常是本頁最后面),需要對連接進(jìn)行關(guān)閉;
    3.對于SQL語句,存儲過程,盡量避免使用*來取所有字段,為了代碼的易讀性,SQL關(guān)鍵字要求全部大寫,字段部分小寫。
    例如:
    SELECT name,age,birthday,telephone,address FROM SchoolFellow.Address WHERE name=’xxxx’ ORDER BY birthday DESC
    4.在ASP頁中所有屬性值盡量使用雙引號括起來,特別是有屬性Value的值,不要因?yàn)槭r間而把雙引號去掉(有的地方雖然可以去掉,程序不會出現(xiàn)錯誤,但,在有的地方去掉雙引號會引來更多的麻煩。)
    例如:
    ”>
    在這個例子中,如果把Value屬性值的單引號去掉,如果數(shù)據(jù)庫中出來的值有空格,空格后面還有值,結(jié)果,顯示的內(nèi)容只有空格前面的內(nèi)容,而后面的內(nèi)容就會丟失。這只是其中一種情況,其他還有很多未知情況發(fā)生。
    5. 配對標(biāo)簽問題:對于象之類的標(biāo)簽,要注意檢查配對的位值,有沒有結(jié)束標(biāo)志。
    6. 對于需要輸入字符串,且需要使用SQL語句的地方,需要進(jìn)行單引號處理,調(diào)用/include/CheckQ.asp中的兩個方法(一個是客戶端處理,一個是服務(wù)器端處理,根據(jù)需要進(jìn)行調(diào)用,安全性要求高的地方多數(shù)情況下采用服務(wù)器端處理。)之一。
    7. 為了提高安全性,能使用ASP編寫的代碼,盡量采用ASP編寫,在服務(wù)器端運(yùn)行,不讓用戶看到代碼。
    8. 對于安全性要求特別高的地方,建議采用三層結(jié)構(gòu):使用VB或Delphi編寫商業(yè)邏輯層代碼(COM),盡量把數(shù)據(jù)庫的連接部分封裝到組件中,提高安全性能,通過組件和數(shù)據(jù)庫交流。
    9. 對于網(wǎng)站的安全性,應(yīng)該采用好的斷口掃描軟件,查看網(wǎng)站已經(jīng)打開的斷口,把不安全的斷口給關(guān)閉。
    四、 養(yǎng)成寫開發(fā)文檔的習(xí)慣:
    對于每一個頁面設(shè)計(前接頁,后接頁),包括功能說明,頁面設(shè)計,頁面名稱,存放位置等,應(yīng)當(dāng)有相應(yīng)的文檔記載。對于發(fā)生改動的地方,需要保留原來的部分(注釋或備份),并說明備份文件存放的地方,改動時間,修改人。
    對于程序部分,應(yīng)該有相應(yīng)的設(shè)計流程,改動的時候,也需要設(shè)計改動流程圖,以便以后進(jìn)行對比,和查找問題所在位置,以及問題的嚴(yán)重性分析。