人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

如何編寫高質(zhì)量的VB代碼(下)

如何編寫高質(zhì)量的VB代碼(下)

更新時間:2022-07-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

12. 銷毀對象

  無論編寫的是什么軟件,程序員都需要考慮在用戶決定終止軟件運(yùn)行后釋放軟件占用的內(nèi)存空間。但遺憾的是很多程序員對這一點(diǎn)好像并不是很在意。正確的做法是在退出程序前需要銷毀程序中使用的對象。例如:

  Dim FSO as New FileSystemObject
  ' 執(zhí)行操作
  ' 銷毀對象
  Set FSO = Nothing
  對于窗體,可以進(jìn)行卸載:
  Unload frmMain

  或
  Set frmMain = Nothing

  13. 變長和定長字符串

  從技術(shù)上來說,與變長字符串相比,定長字符串需要較少的處理時間和空間。但是定長字符串的缺點(diǎn)在于在很多情況下,你都需要調(diào)用Trim函數(shù)以去除字符串末的空字符,這樣反而會降低代碼效率。所以除非是字符串的長度不會變化,否則還是使用變長字符串。

  14. 使用類模塊,而不是ActiveX控件

  除非ActiveX控件涉及到用戶界面,否則盡量使用輕量的對象,例如類。這兩者之間的效率有很大差異。

  15. 使用內(nèi)部對象

  在涉及到使用ActiveX控件和DLL的時候,很多程序員喜歡將它們編譯好,然后再加入工程中。我建議你最好不要這樣做,因為從VB連接到一個外部對象需要耗費(fèi)大量的CPU處理能力。每當(dāng)你調(diào)用方法或存取屬性的時候,都會浪費(fèi)大量的系統(tǒng)資源。如果你有ActiveX控件或DLL的源代碼,將它們作為工程的私有對象。

  16. 減少模塊的數(shù)量

  有些人喜歡將通用的函數(shù)保存在模塊中,對于這一點(diǎn)我表示贊同。但是在一個模塊中只寫上二三十行代碼就有些可笑了。如果你不是非常需要模塊,盡量不要使用它。這樣做的原因是因為只有在模塊中的函數(shù)或變量被調(diào)用時,VB才將模塊加載到內(nèi)存中;當(dāng)VB應(yīng)用程序退出時,才會從內(nèi)存中卸載這些模塊。如果代碼中只有一個模塊,VB就只會進(jìn)行一次加載操作,這樣代碼的效率就得到了提高;反之如果代碼中有多個模塊,VB會進(jìn)行多次加載操作,代碼的效率會降低。

  17. 使用對象數(shù)組

  當(dāng)設(shè)計用戶界面時,對于同樣類型的控件,程序員應(yīng)該盡量使用對象數(shù)組。你可以做一個實驗:在窗口上添加100個PictureBox,每個PictureBox都有不同的名稱,運(yùn)行程序。然后創(chuàng)建一個新的工程,同樣在窗口上添加100個PictureBox,不過這一次使用對象數(shù)組,運(yùn)行程序,你可以注意到兩個程序加載時間上的差別。

  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. 減少圖片的使用

  圖片將占用大量內(nèi)存,而且處理圖片也需要占用很多CPU資源。在軟件中,如果可能的話,可以考慮用背景色來替代圖片--當(dāng)然這只是從技術(shù)人員的角度出發(fā)看這個問題。

  20. 使用ActiveX DLL,而不是ActiveX控件

  如果你設(shè)計的ActiveX對象不涉及到用戶界面,使用ActiveX DLL。
  編譯優(yōu)化

  我所見過的很多VB程序員從來沒有使用過編譯選項,也沒有試圖搞清楚各個選項之間的差別。下面讓我們來看一下各個選項的具體含義。

  1. P-代碼(偽代碼)和本機(jī)代碼

  你可以選擇將軟件編譯為P-代碼或是本機(jī)代碼。缺省選項是本機(jī)代碼。那什么是P-代碼和本機(jī)代碼呢?

  P-代碼:當(dāng)在VB中執(zhí)行代碼時,VB首先是將代碼編譯為P-代碼,然后再解釋執(zhí)行編譯好的P-代碼。在編譯環(huán)境下,使用這種代碼要比本機(jī)代碼快。選擇P-代碼后,編譯時VB將偽代碼放入一個EXE文件中。

  本機(jī)代碼:本機(jī)代碼是VB6以后才推出的選項。當(dāng)編譯為EXE文件后,本機(jī)代碼的執(zhí)行速度比P-代碼快。選擇本機(jī)代碼后,編譯時VB使用機(jī)器指令生成EXE文件。

  在使用本機(jī)代碼進(jìn)行編譯時,我發(fā)現(xiàn)有時候會引入一些莫名其妙的錯誤。在編譯環(huán)境中我的代碼完全正確地被執(zhí)行了,但是用本機(jī)代碼選項生成的EXE文件卻不能正確執(zhí)行。通常這種情況是在卸載窗口或彈出打印窗口時發(fā)生的。我通過在代碼中加入DoEvent語句解決了這個問題。當(dāng)然出現(xiàn)這種情況的幾率非常少,也許有些VB程序員從來沒有遇到過,但是它的確存在。

  在本機(jī)代碼中還有幾個選項:

  a) 代碼速度優(yōu)化:該選項可以編譯出速度較快的執(zhí)行文件,但執(zhí)行文件比較大。推薦使用

  b) 代碼大小優(yōu)化:該選項可以編譯出比較小的執(zhí)行文件,但是以犧牲速度為代價的,不推薦使用。

  c) 無優(yōu)化:該選項只是將P-代碼轉(zhuǎn)化為本機(jī)代碼,沒有做任何優(yōu)化。在調(diào)試代碼時可以使用。

  d) 針對Pentium Pro優(yōu)化:雖然該項不是本機(jī)代碼中的缺省選項,但是我通常會使用該選項。該選項編譯出的可執(zhí)行程序在Pentium Pro和Pentium 2以上的機(jī)器上可以運(yùn)行得更快,而在比較老的機(jī)器上要稍稍慢一些。考慮到現(xiàn)在用Pentium 2都是落伍,所以推薦大家使用該選項。

  e) 產(chǎn)生符號化調(diào)試信息:該項在編譯過程中生成一些調(diào)試信息,使用戶可以利用Visual C++一類的工具來調(diào)試編譯好的代碼。使用該選項會生成一個.pdf文件,該文件記錄了可執(zhí)行文件中的標(biāo)志信息。當(dāng)程序擁有API函數(shù)或DLL調(diào)用時,該選項還是比較有幫助的。

  2. 高級優(yōu)化

  高級優(yōu)化中的設(shè)置可以幫助你提高軟件的速度,但是有時候也會引入一些錯誤,因此我建議大家盡量小心地使用它們。如果在代碼中有比較大的循環(huán)體或者復(fù)雜的數(shù)學(xué)運(yùn)算時,選中高級優(yōu)化中的某些項會大幅度提升代碼的性能。如果你使用了高級優(yōu)化功能,我建議你嚴(yán)格測試編譯好的文件。

  a) 假定無別名:可以提高循環(huán)體中代碼的執(zhí)行效率,但是在如果通過變量的引用改變變量值的情況下,例如調(diào)用一個方法,變量的引用作為方法的參數(shù),在方法中改變了變量的值的話,就會引發(fā)錯誤。有可能只是返回的結(jié)果錯誤,也有可能是導(dǎo)致程序中斷運(yùn)行的嚴(yán)重錯誤。

  b) 取消數(shù)組綁定檢查、取消整數(shù)溢出檢查和取消浮點(diǎn)錯誤檢查:在程序運(yùn)行時,如果通過這些檢查發(fā)現(xiàn)了錯誤,錯誤處理代碼會處理這些錯誤。但是如果取消了這些檢查,發(fā)生了錯誤程序就無法處理。只有當(dāng)你確定你的代碼中不會出現(xiàn)上面的這些錯誤時,你才可以使用這些選項。它們將使軟件的性能得到很大的提升。

  c) 允許不舍入的浮點(diǎn)操作:選擇該選項可以是編譯出來的程序更快地處理浮點(diǎn)操作。它唯一的缺點(diǎn)就是在比較兩個浮點(diǎn)數(shù)時可能會導(dǎo)致不正確的結(jié)果。

  d) 取消Pentium FDIV安全檢查:該選項是針對一些老的Pentium芯片設(shè)置的,現(xiàn)在看來已經(jīng)過時了。


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 唐海县| 全州县| 五台县| 三河市| 庆阳市| 旌德县| 噶尔县| 潮州市| 根河市| 石狮市| 滦平县| 双桥区| 安溪县| 崇阳县| 福清市| 遂平县| 沙田区| 临海市| 旬阳县| 辽阳市| 东莞市| 昂仁县| 芦溪县| 额敏县| 溧阳市| 商丘市| 德保县| 松潘县| 申扎县| 教育| 神木县| 丰宁| 东丽区| 策勒县| 沙田区| 金山区| 疏附县| 大庆市| 循化| 祁东县| 江陵县|