国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

如何編寫高質量的VB代碼(2)

2024-07-21 02:20:56
字體:
來源:轉載
供稿:網友
如何編寫高質量的vb代碼(2)

12. 銷毀對象
  無論編寫的是什么軟件,程序員都需要考慮在用戶決定終止軟件運行后釋放軟件占用的內存空間。但遺憾的是很多程序員對這一點好像并不是很在意。正確的做法是在退出程序前需要銷毀程序中使用的對象。例如:
dim fso as new filesystemobject
注釋: 執行操作
注釋: 銷毀對象
set fso = nothing
對于窗體,可以進行卸載:
unload frmmain
  或
set frmmain = nothing
  13. 變長和定長字符串
  從技術上來說,與變長字符串相比,定長字符串需要較少的處理時間和空間。但是定長字符串的缺點在于在很多情況下,你都需要調用trim函數以去除字符串末的空字符,這樣反而會降低代碼效率。所以除非是字符串的長度不會變化,否則還是使用變長字符串。
  14. 使用類模塊,而不是activex控件
  除非activex控件涉及到用戶界面,否則盡量使用輕量的對象,例如類。這兩者之間的效率有很大差異。
  15. 使用內部對象
  在涉及到使用activex控件和dll的時候,很多程序員喜歡將它們編譯好,然后再加入工程中。我建議你最好不要這樣做,因為從vb連接到一個外部對象需要耗費大量的cpu處理能力。每當你調用方法或存取屬性的時候,都會浪費大量的系統資源。如果你有activex控件或dll的源代碼,將它們作為工程的私有對象。
  16. 減少模塊的數量
  有些人喜歡將通用的函數保存在模塊中,對于這一點我表示贊同。但是在一個模塊中只寫上二三十行代碼就有些可笑了。如果你不是非常需要模塊,盡量不要使用它。這樣做的原因是因為只有在模塊中的函數或變量被調用時,vb才將模塊加載到內存中;當vb應用程序退出時,才會從內存中卸載這些模塊。如果代碼中只有一個模塊,vb就只會進行一次加載操作,這樣代碼的效率就得到了提高;反之如果代碼中有多個模塊,vb會進行多次加載操作,代碼的效率會降低。
  17. 使用對象數組
  當設計用戶界面時,對于同樣類型的控件,程序員應該盡量使用對象數組。你可以做一個實驗:在窗口上添加100個picturebox,每個picturebox都有不同的名稱,運行程序。然后創建一個新的工程,同樣在窗口上添加100個picturebox,不過這一次使用對象數組,運行程序,你可以注意到兩個程序加載時間上的差別。
  18. 使用move方法
  在改變對象的位置時,有些程序員喜歡使用width,height,top和left屬性。例如:
image1.width = 100
image1.height = 100
image1.top = 0
image1.left = 0
  實際上這樣做效率很低,因為程序修改了四個屬性,而且每次修改之后,窗口都會被重繪。正確的做法是使用move方法:
image1.move 0,0,100,100
  19. 減少圖片的使用
  圖片將占用大量內存,而且處理圖片也需要占用很多cpu資源。在軟件中,如果可能的話,可以考慮用背景色來替代圖片--當然這只是從技術人員的角度出發看這個問題。
  20. 使用activex dll,而不是activex控件
  如果你設計的activex對象不涉及到用戶界面,使用activex dll。
  編譯優化
  我所見過的很多vb程序員從來沒有使用過編譯選項,也沒有試圖搞清楚各個選項之間的差別。下面讓我們來看一下各個選項的具體含義。
  1. p-代碼(偽代碼)和本機代碼
  你可以選擇將軟件編譯為p-代碼或是本機代碼。缺省選項是本機代碼。那什么是p-代碼和本機代碼呢?
p-代碼:當在vb中執行代碼時,vb首先是將代碼編譯為p-代碼,然后再解釋執行編譯好的p-代碼。在編譯環境下,使用這種代碼要比本機代碼快。選擇p-代碼后,編譯時vb將偽代碼放入一個exe文件中。
  本機代碼:本機代碼是vb6以后才推出的選項。當編譯為exe文件后,本機代碼的執行速度比p-代碼快。選擇本機代碼后,編譯時vb使用機器指令生成exe文件。
  在使用本機代碼進行編譯時,我發現有時候會引入一些莫名其妙的錯誤。在編譯環境中我的代碼完全正確地被執行了,但是用本機代碼選項生成的exe文件卻不能正確執行。通常這種情況是在卸載窗口或彈出打印窗口時發生的。我通過在代碼中加入doevent語句解決了這個問題。當然出現這種情況的幾率非常少,也許有些vb程序員從來沒有遇到過,但是它的確存在。

  在本機代碼中還有幾個選項:
  a) 代碼速度優化:該選項可以編譯出速度較快的執行文件,但執行文件比較大。推薦使用
  b) 代碼大小優化:該選項可以編譯出比較小的執行文件,但是以犧牲速度為代價的,不推薦使用。
  c) 無優化:該選項只是將p-代碼轉化為本機代碼,沒有做任何優化。在調試代碼時可以使用。
  d) 針對pentium pro優化:雖然該項不是本機代碼中的缺省選項,但是我通常會使用該選項。該選項編譯出的可執行程序在pentium pro和pentium 2以上的機器上可以運行得更快,而在比較老的機器上要稍稍慢一些。考慮到現在用pentium 2都是落伍,所以推薦大家使用該選項。
  e) 產生符號化調試信息:該項在編譯過程中生成一些調試信息,使用戶可以利用visual c++一類的工具來調試編譯好的代碼。使用該選項會生成一個.pdf文件,該文件記錄了可執行文件中的標志信息。當程序擁有api函數或dll調用時,該選項還是比較有幫助的。
  2. 高級優化
  高級優化中的設置可以幫助你提高軟件的速度,但是有時候也會引入一些錯誤,因此我建議大家盡量小心地使用它們。如果在代碼中有比較大的循環體或者復雜的數學運算時,選中高級優化中的某些項會大幅度提升代碼的性能。如果你使用了高級優化功能,我建議你嚴格測試編譯好的文件。
  a) 假定無別名:可以提高循環體中代碼的執行效率,但是在如果通過變量的引用改變變量值的情況下,例如調用一個方法,變量的引用作為方法的參數,在方法中改變了變量的值的話,就會引發錯誤。有可能只是返回的結果錯誤,也有可能是導致程序中斷運行的嚴重錯誤。
  b) 取消數組綁定檢查、取消整數溢出檢查和取消浮點錯誤檢查:在程序運行時,如果通過這些檢查發現了錯誤,錯誤處理代碼會處理這些錯誤。但是如果取消了這些檢查,發生了錯誤程序就無法處理。只有當你確定你的代碼中不會出現上面的這些錯誤時,你才可以使用這些選項。它們將使軟件的性能得到很大的提升。
  c) 允許不舍入的浮點操作:選擇該選項可以是編譯出來的程序更快地處理浮點操作。它唯一的缺點就是在比較兩個浮點數時可能會導致不正確的結果。
  d) 取消pentium fdiv安全檢查:該選項是針對一些老的pentium芯片設置的,現在看來已經過時了。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣威市| 巴彦淖尔市| 丹阳市| 长顺县| 化隆| 平安县| 苗栗市| 福贡县| 龙泉市| 庆城县| 东乌珠穆沁旗| 皋兰县| 达孜县| 兰考县| 犍为县| 新邵县| 大田县| 阳西县| 象州县| 辽中县| 连平县| 喀什市| 盘锦市| 沙雅县| 东阿县| 青海省| 南部县| 贵州省| 谢通门县| 泉州市| 磴口县| 永泰县| 桃江县| 鄱阳县| 大宁县| 平安县| 平安县| 祥云县| 平乡县| 东丽区| 天水市|