ASP通用開發規範(個人標準)

來源:互聯網
上載者:User

為了規範程式碼編寫,提高代碼可讀性,降低後期維護成本,提高辦公效率,建議以後編寫的程式按以下幾條規範進行:

  一、 統一VBSCRIPT和ASP程式編寫規範:

  (一)變數命名規則:

  由於在ASP和VBSCRIPT中因為不需要聲明變數,同時不能聲明變數的類型,但為了提高代碼的可讀性,養成好的開發習慣,對於本系統開發的變數命名統一規則如下:

  1. 使用Dim、Public、Private聲明變數;

  例如:Dim iStudentNum

  2. 變數類型的體現:

  a、 整型變數:以小寫字母i開頭,後面跟變數標示符,英文單詞的第一個字母大寫。

  例如:下面聲明一個儲存資料庫記錄多少的變數

Dim iResordsetNumber

  b、 單精確度實體變數:以小寫字母f開頭,後面跟變數標示符,英文單詞的第一個字母大寫。

  c、 雙精確度實體變數:以小寫字母d開頭,後面跟變數標示符,英文單詞的第一個字母要大寫。

  d、 字元型變數:以小寫字母s開頭;

  e、 布爾型變數:以小寫字母b開頭;

  f、 陣列變數:數群組類型+“_”+“Array”+“_”+“變數標示符”

  例如:定義一個儲存學產生績的數組(儲存單精確度實體類型變數)

Dim f_Array_StudentMark

  3. 變數標示符要符合標示符標準,同時容易理解,盡量使用英文單詞來代替,盡量避免使用縮寫或簡寫。

  例如:儲存校友通訊錄的字串變數定義為:

Dim sSchoolfellowAddressList;

  雖然這樣定義在輸入的時候比較麻煩,但是,它大大提高了程式的可讀性,見其變數命名就知其意。在做變數尋找的時候也比較方便。 速度和效能總是不能兩全,為了方便後者我們也就只有犧牲速度。

  4.在變數定義後面加變數功能定義的注釋。

  (二)常量命名規則:

  類型體現和上面一樣,不一樣的地方是,所有後面的標示符全部大寫,例如:

  定義一個儲存語言種類的的字元型常量:

Const sLANGUAGE_TYPE=”Chinese”

  (三)功能函數、過程命名規則:

  1. 使用Function聲明函數,用Sub聲明過程;

  2. 函數名或過程名的第一個字母大寫,且後面的每個單詞第一個字母大寫。

  例如:

Function CheckValidityOfInput(sStuentMark)

‘此處寫代碼

…………

End Function

  3. 函數名或過程名要容易讀,簡單明了。

  4. 在函數前面加註釋,說明函數功能、參數說明、建立日期、修改日期、修改原因、建立人、修改人等相關資訊。

  (四)代碼縮排標準:

  為了提高代碼的美觀型和易讀性,在此提出代碼編寫的版面格式:區間與區間之間以一個<Tab>為間距。

  例如:

‘***********************************************************

‘功能:檢測輸入字串中的單引號,如果有則把原來的一個單引號變成兩

‘ 個單引號,兩個變成四個,依次類推,從而避免SQL語句執行錯誤。

‘建立人:XXXX

‘建立時間:2002-7-6

‘修改時間:

‘修改原因:

‘修改人:

‘輸入參數說明:sInputString:需要進行單引號檢測的字串

‘***********************************************************

Function CheckValidityOfInput(sInputString)

Dim iCirculationControl ‘控制迴圈

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

  二、 統一javascript程式編寫規範:

  javascript的命名規則和上面大部分相同,唯一不同的地方是:變數使用Var來聲明,在聲明結束後以分號(;)結束。

  函數的代碼要求層次清楚,該寫在下一行的地方盡量往下一行寫,不要在一行中完成所有代碼,這樣看起來不容易,檢查錯誤也特別費時。

  在寫函數的時候記著加註釋內容,以便以後維護時快速瞭解程式功能。

  下面是一個javascript程式:

<Script Language=”javascript”>

//***********************************************************************

//功能:對Form中的Text,Password,TextArea對象進行單引號處理,解決由於單引號

// 起的系統錯誤。

//建立人:XXXX

//建立時間:2002-7-8

//修改時間:

//修改原因:

//修改人:

//**********************************************************************

function CheckElement()

{

var sNeedCheck=""; //檢測屬於INPUT標籤的內容

var iControlInput=0; //控制迴圈

var iLocationInput=0; //控制位置

var iLengthInput=0; //儲存字串長度

var sCheckingInput=""; //正在檢測的字元

var sReplaceInput=""; //替換字元

var sHaveCheckInput=""; //已經檢測的字元

var objInput; //儲存INPUT對象;

var objTextArea; //儲存TextArea對象

var iControlTextArea=0;

var iLocationTextArea=0;

var iLengthTextArea=0;

var sCheckingTextArea="";

var sReplaceTextArea="";

var sHaveCheckTextArea="";

//檢測頁面中的Text和Password對象中的單引號

for (i = 0; i < document.all.tags('INPUT').length; i++){

objInput = document.all.tags('INPUT')[i];

if(objInput.type=='text'|| objInput.type=='password'){

sNeedCheckInput=obj.value;

iLengthInput=sNeedCheckInput.length;

for(iControl=0;iControl<iLength;iControl++){

sCheckingInput=sNeedCheckInput.charAt(iControl);

if(sCheckingInput==”’”)

sReplaceInput=”’’”;

else

sReplaceInput=sCheckingInput;

sHaveCheckInput=sHaveCheckInput+sReplaceInput;

}

}

objInput.value=sHaveCheckInput;

}

//檢測頁面中的TextArea對象中的單引號

for (i = 0; i < document.all.tags('TEXTAREA').length; i++){

objTextArea = document.all.tags('TEXTAREA')[i];

if(objTextArea.type=='text'|| objTextArea.type=='password'){

sNeedCheckTextArea=obj.value;

iLengthTextArea=sNeedCheckTextArea.length;

for(iControl=0;iControl<iLength;iControl++){

sCheckingTextArea=sNeedCheckTextArea.charAt(iControl);

if(sCheckingTextArea==”’”)

sReplaceTextArea=”’’”;

else

sReplaceTextArea=sCheckingTextArea;

sHaveCheckTextArea=sHaveCheckTextArea+

sReplaceTextArea;

}

}

objTextArea.value=sHaveCheckTextArea;

}

}

</Script>

  三、 系統效能提高,代碼規範:

  1.在ASP頁面內,凡是使用CreageObject()建立的對象(Com、Recordset等),對於這些變數,應當在該頁結束進行對象釋放:即

  Set 物件變數名=Nothing

  2.資料庫開啟以後在不用的時候(通常是本頁最後面),需要對串連進行關閉;

  3.對於SQL語句,預存程序,盡量避免使用*來取所有欄位,為了代碼的易讀性,SQL關鍵字要求全部大寫,欄位部分小寫。

  例如:

Select name,age,birthday,telephone,address FROM SchoolFellow.Address Where name=’xxxx’ orDER BY birthday DESC

  4.在ASP頁中所有屬性值盡量使用雙引號括起來,特別是有屬性Value的值,不要因為省時間而把雙引號去掉(有的地方雖然可以去掉,程式不會出現錯誤,但,在有的地方去掉雙引號會引來更多的麻煩。)

  例如:

<INPUT type=”text” id=”ClassID” name=”ClassID” value=”<%=sClassID%>”>

  在這個例子中,如果把Value屬性值的單引號去掉,如果資料庫中出來的值有空格,空格後面還有值,結果,顯示的內容只有空格前面的內容,而後面的內容就會丟失。這隻是其中一種情況,其他還有很多未知情況發生。

  5. 配對標籤問題:對於象<a></a>之類的標籤,要注意檢查配對的位值,有沒有結束標誌。

  6. 對於需要輸入字串,且需要使用SQL語句的地方,需要進行單引號處理,調用/include/CheckQ.asp中的兩個方法(一個是用戶端處理,一個是伺服器端處理,根據需要進行調用,安全性要求高的地方多數情況下採用伺服器端處理。)之一。

  7. 為了提高安全性,能使用ASP編寫的代碼,盡量採用ASP編寫,在伺服器端運行,不讓使用者看到代碼。

  8. 對於安全性要求特別高的地方,建議採用三層結構:使用VB或Delphi編寫商業邏輯層代碼(COM),盡量把資料庫的串連部分封裝到組件中,提高安全效能,通過組件和資料庫交流。

  9. 對於網站的安全性,應該採用好的斷口掃描軟體,查看網站已經開啟的斷口,把不安全的斷口給關閉。

  四、 養成寫開發文檔的習慣:

  對於每一個頁面設計(前接頁,後接頁),包括功能說明,頁面設計,頁面名稱,存放位置等,應當有相應的文檔記載。對於發生改動的地方,需要保留原來的部分(注釋或備份),並說明備份檔案存放的地方,改動時間,修改人。

  對於程式部分,應該有相應的設計流程,改動的時候,也需要設計改動流程圖,以便以後進行對比,和尋找問題所在位置,以及問題的嚴重性分析。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.