淺談ASP程式的編寫和調試:給初學者

來源:互聯網
上載者:User
程式|初學

  很多朋友覺得ASP不是很好學,我覺得其實有了一定的編程基礎,再加上那麼一點點技巧,入門是不難的(不過要做好也不是很容易,要很多的相關知識——什麼Sql Server資料庫語言啦,資料結構啦(這些都是在最佳化Asp的演算法時候要熟悉的)。

  在這隻和大家談談我個人是怎書寫和調試ASP的,希望能給大有一點協助……

  ASP指令碼的書寫:

  一、注意區分清楚html文法和VBScript文法。因為ASP是混合使用Html文法和VBScript文法的(當然,我全部寫成VBScript文法也可以,不過那樣的程式那難閱讀)。最好使用一些能標示html標記和VBScript標記的編輯工具,比如Ultra Edit什麼的。

    我學得編輯器的工具列菜單不用太多,有一般的功能就行了,因為工具菜單一多,編輯地區肯定會變得較小,這是我們不希望看到的(你總不希望為了找出一個If的結束語句End if而翻來翻去吧。這也許是我以前使用記事業來編寫Asp指令碼的原因吧——呵呵,記事本的編輯地區較大嘛……

  二、書寫程式時使用縮排

    書寫程式時使用縮排可以減少很多不必要的語法錯誤。以免執行你的asp程式的時候提示“缺少end”什麼什麼的……

    通常指使用縮排書寫指的是對流量控制語句使用縮排,如果我不說,你也應該知道有哪些流量控制語句吧:

    If……Else……End if
    For……Next
    Do While……Loop
    Select case ……Case……Case Else……End Select
    For each element In group……Next

    等等……

    比如寫成下面這樣查錯就方便多了:

    If 條件 then
      語句
      do while 條件
        語句
      loop
    else
      語句
    end if

  三、熟悉一些省略的寫法,比如:

    If 條件 then
      語句
    End if
    可簡寫成If 條件 then 語句
    注意:後面不能再寫else和end if。
    等等……

  四、盡量熟悉你要使用的指令碼語言。

  五、備用一些常用的教程(比如VBScript語言參考什麼的),以備查用。

  六、拼字要十分小心


  Asp指令碼的調試:

  一、在你編輯實現一定功能的Asp指令碼時,首先得有一個清晰的思路,只要是:要實現什麼功能,實現的關鍵是什麼、語句流怎樣控制等……雖然小的項目(比如一個簡單的留言本系統)不一定要寫出來,但起碼要心中有數。

  二、如果要使用資料庫的話,得先根據你的項目功能設計資料庫結構

  三、不要等到整個Asp指令碼全部編寫完畢時才開始調試。一般都是一邊編寫一邊調試(如果你看我做的話就是開兩個視窗:一個編輯器,一個IE,在編輯中改一下指令碼,再到IE視窗重新整理一下)。

    如果你的指令碼有幾百行那麼多,即使你只是將一段正確的指令碼輸入到檔案裡面,也難保不會出錯。而這麼長的指令檔是很難調試的,一旦出現錯誤,你很難找出到底哪裡出了問題——即使是語法錯誤。

  四、調試語法錯誤的時候,經常採用“截短法”來做。

    比如出錯提示為“第236行錯誤,缺少end”,這樣長的代碼,你很難知道到底缺少的是那個If的end或者是select的end……

    比如下面一段程式:

一大堆語句
if

else
  (這裡有一大堆語句)
end if

    我通常的做法是截去括弧中的部分,然後再試運行,再逐步將截去的部分放回去(這特別適用於調試別人編輯的指令碼)。

  五、標記調試方法

    有時為了知道程式執行到了哪個地方,通常在程式裡加進一些標記,比如response.write "abc",然後將這句移動位置,這樣就能確定程式到底有沒有執行到我希望到的地方。

    在調試迴圈的時候,常常需要輸出迴圈控制變數的值到瀏覽器以協助調試。

    一些由於是變數值引起的錯誤,比如資料庫連接或記錄集開啟錯誤,通常在出錯語句的前面輸出sql語句以確認sql語句沒有錯誤。出於這個考慮,我通常使用sql="語句"/set  rs=execute(sql)來代替直接運行set rs=execute("語句"),因為當我的語句出錯時,我可以很方便地在前面來個response.write sql來查看sql語句到底有沒有問題。

  六、在調試表單時,對於password表單項,通常先將它變成text,等調試好了後才改為password。

  七、監視變數法

    在調試一些變數比較多的指令碼時,比如聊天室調試時,由於大量使用到application和session變數,通常要做些輔助的指令碼來查看application和session變數,這樣就方便多了。

  八、以少代多法

    調試global.asa檔案的邏輯錯誤是比較麻煩的,特別是session.onend和application.onend事件。

    applicatoin.onstart事件調試不難——因為當你第一次開啟瀏覽器的時候,如果global.asa檔案有語法錯誤的時候,瀏覽器會提示你什麼地方出錯了。但很不幸地,session.onend就看不到提示了。為了確認你的session.onend到底有沒有執行,通常在application.onstart設定一個標記變數,然後在session.ond事件中將這個變數改成變一個值,這樣就可以等session逾時後查看該標記變數有沒有被改變,如果沒有改變就證明你的session.onend沒有執行。

    對於application.onend的調試,你可以把那部分代碼拿到一個asp檔案中,給它一定的條件(比如它使用了什麼變數,然後滿足它的條件看看有沒有達到預的效果。不過通常application.onend都不會太複雜(複雜了調試通不過唄)。

  九、盡量給一些資料庫連接串全部的參數,以免引起不必要的麻煩。

    雖然一些參數不是必須的,但還是全部給它較好。我曾經試過由於沒有給一個Access的資料庫連接字串足夠的參數而引起離奇古怪的問題:修改了串連檔案後,重新整理一次可得到正確的結果,再來重新整理一次就不行了,甚至出現了“無法指出的錯誤”。

  十、不要急於進行錯誤處理On_orror。因為錯誤本身可以幫我們調試指令碼,你一旦屏蔽了錯誤,很容易不知道到底哪裡出錯了。

  十一、減少邏輯錯誤的一個最好的方法是有一個清晰的思路,別人是很難幫上你的。

    因此如果你在BBS上問一個邏輯錯誤,回答者首先的回答就是:“你的原始碼呢?”,因此除非你是為了灌水,否則在BBS上問一個象這樣“為什麼我的記錄集是空的”的問題是沒有意義的。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.