參考的ASP開發(fā)規(guī)范
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
[p]asp開發(fā)規(guī)范 ——寫這個東西請多多指教,以后開發(fā)時好少吃點苦頭。[/p]
[p][b]一、單頁編寫規(guī)范[/b]:[/p] [p]切記頁面要分模塊來寫:[br]第一模塊:接收參數(shù)。[有可能從不同頁面提交到同一個頁面;也可能出現(xiàn)兩個表單項以哪個優(yōu)先的處理。[br]第二模塊:定義全局變量。[br]第三模塊:寫處理代碼(盡量將代碼都包含到函數(shù)中,詳見頁面附注一。)。——到此asp代碼主要部分完成。[br]第四模塊:純html代碼,利用儲存在全局變量中的值來生成頁面。[br]第五(注意):要在頁面頭部寫清頁面邏輯。(如何接收、處理。)[br]優(yōu)點:便于維護。模塊獨立,便于重復(fù)使用到類似頁面。[/p] [p][b]二、全站文件構(gòu)建規(guī)范[/b]:[/p] [p]1.工程接手后,先觀看靜態(tài)頁,掌握邏輯及瀏覽順序。[br]2.抽取頁面中被重復(fù)利用到的地方做成嵌入文件。[br]3.抽取頭文件、尾文件,及左側(cè)菜單欄,做成嵌入文件。[br]4.劃分頁面結(jié)構(gòu),做出模板文件。——以后制作中就copy它,然后就可直接制作。[br]注意:不要急于編寫頁面,除非你接手的是一項小工程,或者用戶需求已經(jīng)非常清楚確定并且不會再更改,否則,保持頁面代碼的可讀性是非常重要的!(當(dāng)你面對大返工時,你的心情如何?先對潛在的危險考慮一下吧!)[br]——因為我們每個人都對自己寫的代碼非常明白,而都比較難于讀懂別人寫的代碼。并且,由于客戶需求的變化,修改甚至推翻原有設(shè)計是比較常見的事。所以要注意在編寫代碼時注意讓后來者快速讀懂,并便于修改。][至少要在頁面頭部加上注釋,在代碼中間重要的部分,也有必要加一些說明性注釋。][/p] [p]我們所作的一切僅僅是為了:增加可移植可重用性、使邏輯清楚,便于維護、[br]適應(yīng)用戶需求的改變,并盡快完成,減少無用功。[br]――――――――――――――――――――――――――――――――――――――[/p] [p]附注一:第三模塊編寫說明。《asp頁面編寫結(jié)構(gòu)》[br]1.先寫注釋[br]2.寫嵌入文件。[br]3.寫大塊的asp代碼(從com中取出的)[br]——注意:復(fù)雜頁面,盡量將不同com的操作封裝在獨立的函數(shù)里;[br]——函數(shù)結(jié)尾有一句調(diào)用,后面頁面中直接讀取函數(shù)處理完的數(shù)據(jù)(已被賦給全局變量)[br]——調(diào)用函數(shù)前,對頁面入口參數(shù)進行合法性檢驗。[/p] [p]附注二:第四模塊編寫說明。《html代碼部分需要注意的》[br]1)最好不使頁面的asp代碼和html代碼混雜在一起,——感覺比較混亂。[br]2)通過獲取全局變量的數(shù)據(jù)得到asp的處理結(jié)果。[br]3)關(guān)于客戶端javascript:[br]表單提交前要進行合法性檢驗。寫在[/p] [p]對下拉框要有和隱藏按鈕同步的,寫出單獨小函數(shù),放在該按鈕的下面。[br]對大型innerhtml型的客戶端交互操作,將代碼集中寫在相應(yīng)對應(yīng)的[/p] [p]寫客戶端腳本時,可多寫些函數(shù),使函數(shù)間傳遞的參數(shù)簡單,功能單一,以便日后有類似頁面,可以將其拆下來再使用。 [br]對網(wǎng)頁制作的要求:[br]網(wǎng)頁人員完成的頁面,為保證在使用時不會出現(xiàn)混亂,請他們作以下處理:[br]1.表格不要嵌套太多;[br]2.表格寬度要用象素規(guī)定寬度;[br]3.單頁中,一個功能模塊要做成一個表格,以便編寫頁面時,將重復(fù)部分提取成嵌入文件。[br]4.其它要注意的:精簡代碼、注意表格中字符和邊框的寬度。[br]5.文件名請用英文小寫加數(shù)字(和半角下劃線)命名。[想想你的頁面搬到unix主機上的慘狀][/p] [p]為了規(guī)范程序代碼編寫,提高代碼可讀性,降低后期維護成本,提高辦公效率,建議以后編寫的程序按以下幾條規(guī)范進行:[/p] [p][b]一、 統(tǒng)一vbscript和asp程序編寫規(guī)范[/b]:[/p] [p](一)變量命名規(guī)則:[/p] [p]由于在asp和vbscript中因為不需要聲明變量,同時不能聲明變量的類型,但為了提高代碼的可讀性,養(yǎng)成好的開發(fā)習(xí)慣,對于本系統(tǒng)開發(fā)的變量命名統(tǒng)一規(guī)則如下:[/p] [p]1. 使用dim、public、private聲明變量;[/p] [p]例如:dim istudentnum[/p] [p]2. 變量類型的體現(xiàn):[/p] [p]a、整型變量:以小寫字母i開頭,后面跟變量標(biāo)示符,英文單詞的第一個字母大寫。[/p] [p]例如:下面聲明一個存儲數(shù)據(jù)庫記錄多少的變量[/p] [p]dim iresordsetnumber[/p] [p]b、單精度實體變量:以小寫字母f開頭,后面跟變量標(biāo)示符,英文單詞的第一個字母大寫。[/p] [p]c、雙精度實體變量:以小寫字母d開頭,后面跟變量標(biāo)示符,英文單詞的第一個字母要大寫。[/p] [p]d、 字符型變量:以小寫字母s開頭;[/p] [p]e、 布爾型變量:以小寫字母b開頭;[/p] [p]f、數(shù)組變量:數(shù)組類型+“_”+“array”+“_”+“變量標(biāo)示符”[/p] [p]例如:定義一個存儲學(xué)生成績的數(shù)組(存儲單精度實體類型變量)[/p] [p]dim f_array_studentmark[/p] [p]3. 變量標(biāo)示符要符合標(biāo)示符標(biāo)準(zhǔn),同時容易理解,盡量使用英文單詞來代替,盡量避免使用縮寫或簡寫。[/p] [p]例如:存儲校友通訊錄的字符串變量定義為:[/p] [p]dim sschoolfellowaddresslist;[/p] [p]雖然這樣定義在輸入的時候比較麻煩,但是,它大大提高了程序的可讀性,見其變量命名就知其意。在做變量查找的時候也比較方便。速度和性能總是不能兩全,為了方便后者我們也就只有犧牲速度。[/p] [p]4.在變量定義后面加變量功能定義的注釋。[/p] [p](二)常量命名規(guī)則:[/p] [p]類型體現(xiàn)和上面一樣,不一樣的地方是,所有后面的標(biāo)示符全部大寫,例如:[/p] [p]定義一個存儲語言種類的的字符型常量:[/p] [p]const slanguage_type=”chinese”[/p] [p](三)功能函數(shù)、過程命名規(guī)則:[/p] [p]1. 使用function聲明函數(shù),用sub聲明過程;[/p] [p]2. 函數(shù)名或過程名的第一個字母大寫,且后面的每個單詞第一個字母大寫。[/p] [p]例如:[/p] [p]function checkvalidityofinput(sstuentmark)[/p] [p]‘此處寫代碼[/p] [p]…………[/p] [p]end function[/p] [p]3. 函數(shù)名或過程名要容易讀,簡單明了。[/p] [p]4. 在函數(shù)前面加注釋,說明函數(shù)功能、參數(shù)說明、創(chuàng)建日期、修改日期、修改原因、創(chuàng)建人、修改人等相關(guān)信息。[/p] [p](四)代碼縮進標(biāo)準(zhǔn):[/p] [p]為了提高代碼的美觀型和易讀性,在此提出代碼編寫的版面格式:區(qū)間與區(qū)間之間以一個為間距。[/p] [p]例如:[/p] [p]‘***********************************************************[/p] [p]‘功能:檢測輸入字符串中的單引號,如果有則把原來的一個單引號變成兩[/p] [p]‘ 個單引號,兩個變成四個,依次類推,從而避免sql語句執(zhí)行錯誤。[/p] [p]‘創(chuàng)建人:xxxx[/p] [p]‘修改時間:[/p] [p]‘修改原因:[/p] [p]‘修改人:[/p] [p]‘輸入?yún)?shù)說明:sinputstring:需要進行單引號檢測的字符串[/p] [p]‘***********************************************************[/p] [p]function checkvalidityofinput(sinputstring)[/p] [p]dim icirculationcontrol ‘控制循環(huán)[/p] [p]dim sapartstring ‘分離字符檢測[/p] [p]dim ilenofinput ‘輸入字符長度[/p] [p]ilen= len(trim(sinputstring))[/p] [p]for icirculationcontrol = 1 to ilen[/p] [p]if mid(sinputstring, icirculationcontrol, 1) <>"'" then[/p] [p]sapartstring = sapartstring & _[/p] [p]mid(trim(sinputstring), icirculationcontrol , 1)[/p] [p]else[/p] [p]sapartstring = sapartstring & "''"[/p] [p]end if[/p] [p]next[/p] [p]checkvalidityofinput = sapartstring[/p] [p]end function[/p] [p][b]二、 統(tǒng)一javascript程序編寫規(guī)范[/b]:[/p] [p]javascript的命名規(guī)則和上面大部分相同,唯一不同的地方是:變量使用var來聲明,在聲明結(jié)束后以分號(;)結(jié)束。[/p] [p]函數(shù)的代碼要求層次清楚,該寫在下一行的地方盡量往下一行寫,不要在一行中完成所有代碼,這樣看起來不容易,檢查錯誤也特別費時。[/p] [p]在寫函數(shù)的時候記著加注釋內(nèi)容,以便以后維護時快速了解程序功能。[/p] [p]下面是一個javascript程序:[/p] [p][b]三、 系統(tǒng)性能提高,代碼規(guī)范[/b]:[/p] [p]1.在asp頁面內(nèi),凡是使用creageobject()創(chuàng)建的對象(com、recordset等),對于這些變量,應(yīng)當(dāng)在該頁結(jié)束進行對象釋放:即[/p] [p]set 對象變量名=nothing[/p] [p]2.數(shù)據(jù)庫打開以后在不用的時候(通常是本頁最后面),需要對連接進行關(guān)閉;[/p] [p]3.對于sql語句,存儲過程,盡量避免使用*來取所有字段,為了代碼的易讀性,sql關(guān)鍵字要求全部大寫,字段部分小寫。[/p] [p]例如:[/p] [p]select name,age,birthday,telephone,address from schoolfellow.address where name=’xxxx’ order by birthday desc[/p] [p]4.在asp頁中所有屬性值盡量使用雙引號括起來,特別是有屬性value的值,不要因為省時間而把雙引號去掉(有的地方雖然可以去掉,程序不會出現(xiàn)錯誤,但,在有的地方去掉雙引號會引來更多的麻煩。)[/p] [p]例如:[/p] [p]”>[/p] [p]在這個例子中,如果把value屬性值的單引號去掉,如果數(shù)據(jù)庫中出來的值有空格,空格后面還有值,結(jié)果,顯示的內(nèi)容只有空格前面的內(nèi)容,而后面的內(nèi)容就會丟失。這只是其中一種情況,其他還有很多未知情況發(fā)生。[/p] [p]5. 配對標(biāo)簽問題:對于象之類的標(biāo)簽,要注意檢查配對的位值,有沒有結(jié)束標(biāo)志。[/p] [p]6. 對于需要輸入字符串,且需要使用sql語句的地方,需要進行單引號處理,調(diào)用/include/checkq.asp中的兩個方法(一個是客戶端處理,一個是服務(wù)器端處理,根據(jù)需要進行調(diào)用,安全性要求高的地方多數(shù)情況下采用服務(wù)器端處理。)之一。[/p] [p]7. 為了提高安全性,能使用asp編寫的代碼,盡量采用asp編寫,在服務(wù)器端運行,不讓用戶看到代碼。[/p] [p]8. 對于安全性要求特別高的地方,建議采用三層結(jié)構(gòu):使用vb或delphi編寫商業(yè)邏輯層代碼(com),盡量把數(shù)據(jù)庫的連接部分封裝到組件中,提高安全性能,通過組件和數(shù)據(jù)庫交流。[/p] [p]9. 對于網(wǎng)站的安全性,應(yīng)該采用好的斷口掃描軟件,查看網(wǎng)站已經(jīng)打開的斷口,把不安全的斷口給關(guān)閉。[/p] [p][b]四、 養(yǎng)成寫開發(fā)文檔的習(xí)慣[/b]:[/p] [p]對于每一個頁面設(shè)計(前接頁,后接頁),包括功能說明,頁面設(shè)計,頁面名稱,存放位置等,應(yīng)當(dāng)有相應(yīng)的文檔記載。對于發(fā)生改動的地方,需要保留原來的部分(注釋或備份),并說明備份文件存放的地方,改動時間,修改人。[/p] [p]對于程序部分,應(yīng)該有相應(yīng)的設(shè)計流程,改動的時候,也需要設(shè)計改動流程圖,以便以后進行對比,和查找問題所在位置,以及問題的嚴(yán)重性分析。[/p] 該文章在 2010/7/3 14:42:26 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |