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

首頁(yè) > 編程 > Visual Basic > 正文

VB編程的七個(gè)優(yōu)良習(xí)慣

2024-09-07 17:32:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
1、"&"替換"+"2、變量命名大小寫,語(yǔ)句錯(cuò)落有秩,源代碼維護(hù)方面
3、請(qǐng)養(yǎng)成以下的“對(duì)象命名約定”良好習(xí)慣4、在簡(jiǎn)單的選擇條件情況下,使用IIf()函數(shù)
5、盡量使用Debug.Print進(jìn)行調(diào)試6、在重復(fù)對(duì)某一對(duì)象的屬性進(jìn)行修改時(shí),盡量使用With....End With
7、MsgBox中盡量使用消息圖標(biāo),這樣程序比較有規(guī)范8、在可能的情況下使用枚舉

1、"&"替換"+"
在很多人的編程語(yǔ)言中,用“+”來(lái)連接字符串,這樣容易導(dǎo)致歧義。良好的習(xí)慣是用“&”來(lái)連接字符串.

不正確:
Dim sMessage As String
sMessage = "1" + "2"

正確:
Dim sMessage As String
sMessage = "1" & "2"

注意:"&"的后面有個(gè)空格

2、變量命名大小寫,語(yǔ)句錯(cuò)落有秩,源代碼維護(hù)方面

下面大家比較一下以下兩段代碼:

讀懂難度很大的代碼:

Dim SNAME As String
Dim NTURN As Integer

If NTURN = 0 Then
If SNAME = "vbeden" Then
Do While NTURN < 4
NTURN = NTURN + 1
Loop
End If
End If

容易讀懂的代碼:

Dim sName As String
Dim nTurn As Integer

If nTurn = 0 Then
   If sName = "vbeden" Then
      Do While nTurn < 4
          nTurn = nTurn + 1
      Loop
   End If
End If

[返回索引]

3、請(qǐng)養(yǎng)成以下的“對(duì)象命名約定”良好習(xí)慣

推薦使用的控件前綴

控件類型前綴例子
3D Panel pnlpnlGroup
ADO DataadoadoBiblio
Animated buttonanianiMailBox
Check boxchkchkReadOnly
Combo box, drop-down list boxcbocboEnglish
Command buttoncmdcmdExit
Common dialog dlgdlgFileOpen
Communications comcomFax
Control (當(dāng)特定類型未知時(shí),在過(guò)程中所使用的)ctrctrCurrent
DatadatdatBiblio
Data-bound combo boxdbcbodbcboLanguage
Data-bound griddbgrddbgrdQueryResult
Data-bound list boxdblstdblstJobType
Data combodbcdbcAuthor
Data griddgddgdTitles
Data listdbldblPublisher
Data repeaterdrpdrpLocation
Date pickerdtpdtpPublished
Directory list boxdirdirSource
Drive list boxdrvdrvTarget
File list boxfilfilSource
Flat scroll barfsbfsbMove
FormfrmfrmEntry
FramefrafraLanguage
GaugegaugauStatus
GraphgragraRevenue
GridgrdgrdPrices
Hierarchical flexgridflexflexOrders
Horizontal scroll barhsbhsbVolume
ImageimgimgIcon
Image comboimgcboimgcboProduct
ImageListilsilsAllIcons
LabellbllblHelpMessage
Lightweight check boxlwchklwchkArchive
Lightweight combo boxlwcbolwcboGerman
Lightweight command buttonlwcmdlwcmdRemove
Lightweight framelwfralwfraSaveOptions
Lightweight horizontal scroll barlwhsblwhsbVolume
Lightweight list boxlwlstlwlstCostCenters
Lightweight option buttonlwoptlwoptIncomeLevel
Lightweight text boxlwtxtlwoptStreet
Lightweight vertical scroll barlwvsblwvsbYear
LinelinlinVertical
List boxlstlstPolicyCodes
ListViewlvwlvwHeadings
MAPI messagempmmpmSentMessage
MAPI sessionmpsmpsSession
MCImcimciVideo
MenumnumnuFileOpen
Month viewmvwmvwPeriod
MS ChartchchSalesbyRegion
MS Flex gridmsgmsgClients
MS Tab mstmstFirst
OLE containeroleoleWorksheet
Option buttonoptoptGender
Picture boxpicpicVGA
Picture clipclpclpToolbar
ProgressBarprgprgLoadFile
Remote DatardrdTitles
RichTextBoxrtfrtfReport
ShapeshpshpCircle
SlidersldsldScale
SpinspnspnPages
StatusBarstastaDateTime
SysInfosyssysMonitor
TabStriptabtabOptions
Text boxtxttxtLastName
TimertmrtmrAlarm
ToolbartlbtlbActions
TreeViewtretreOrganization
UpDownupdupdDirection
Vertical scroll barvsbvsbRate

推薦使用的數(shù)據(jù)訪問(wèn)對(duì)象 (DAO) 的前綴
用下列前綴來(lái)指示數(shù)據(jù)訪問(wèn)對(duì)象
數(shù)據(jù)庫(kù)對(duì)象前綴例子
ContainerconconReports
DatabasedbdbAccounts
DBEnginedbedbeJet
DocumentdocdocSalesReport
FieldfldfldAddress
GroupgrpgrpFinance
IndexixidxAge
ParameterprmprmJobCode
QueryDef qryqrySalesByRegion
RecordsetrecrecForecast
RelationrelrelEmployeeDept
TableDeftbdtbdCustomers
UserusrusrNew
WorkspacewspwspMine

應(yīng)用程序頻繁使用許多菜單控件,對(duì)于這些控件具備一組唯一的命名約定很實(shí)用。除了最前面 "mnu" 標(biāo)記以外,菜單控件的前綴應(yīng)該被擴(kuò)展:對(duì)每一級(jí)嵌套增加一個(gè)附加前綴,將最終的菜單的標(biāo)題放在名稱字符串的最后。下表列出了一些例子。

推薦使用的菜單前綴
菜單標(biāo)題序列菜單處理器名稱
File OpenmnuFileOpen
File Send EmailmnuFileSendEmail
File Send Fax mnuFileSendFax
Format CharactermnuFormatCharacter
Help ContentsmnuHelpContents

當(dāng)使用這種命名約定時(shí),一個(gè)特定的菜單組的所有成員一個(gè)接一個(gè)地列在 Visual Basic 的“屬性”窗口中。而且,菜單控件的名字清楚地表示出它們所屬的菜單項(xiàng)。

為其它控件選擇前綴

對(duì)于上面沒(méi)有列出的控件,應(yīng)該用唯一的由兩個(gè)或三個(gè)字符組成的前綴使它們標(biāo)準(zhǔn)化,以保持一致性。只有當(dāng)需要澄清時(shí),才使用多于三個(gè)字符的前綴。

常量和變量命名約定

除了對(duì)象之外,常量和變量也需要良好格式的命名約定。本節(jié)列出了 Visual Basic 支持的常量和變量的推薦約定。并且討論標(biāo)識(shí)數(shù)據(jù)類型和范圍的問(wèn)題。

變量應(yīng)該總是被定義在盡可能小的范圍內(nèi)。全局 (Public) 變量可以導(dǎo)致極其復(fù)雜的狀態(tài)機(jī)構(gòu),并且使一個(gè)應(yīng)用程序的邏輯非常難于理解。全局變量也使代碼的重用和維護(hù)更加困難。

Visual Basic 中的變量可以有下列范圍

范圍聲明位置可見位置
過(guò)程級(jí)過(guò)程,子過(guò)程或函數(shù)過(guò)程中的 ‘Private’在聲明它的過(guò)程中
模塊級(jí)窗體或代碼模塊(.frm、.bas )的聲明部分中的 ‘Private’窗體或代碼模塊中的每一個(gè)過(guò)程
全局代碼模塊(.bas)的聲明部分中的 ‘Public’應(yīng)用程序中的每一處

在 Visual Basic 的應(yīng)用程序中,只有當(dāng)沒(méi)有其它方便途徑在窗體之間共享數(shù)據(jù)時(shí)才使用全局變量。當(dāng)必須使用全局變量時(shí),在一個(gè)單一模塊中聲明它們,并按功能分組。給這個(gè)模塊取一個(gè)有意義的名稱,以指明它的作用,如 Public.bas。

較好的編碼習(xí)慣是盡可能寫模塊化的代碼。例如,如果應(yīng)用程序顯示一個(gè)對(duì)話框,就把要完成這一對(duì)話任務(wù)所需要的所有控件和代碼放在單一的窗體中。這有助于將應(yīng)用程序的代碼組織在有用的組件中,并減小它運(yùn)行時(shí)的開銷。

除了全局變量(應(yīng)該是不被傳遞的),過(guò)程和函數(shù)應(yīng)該僅對(duì)傳遞給它們的對(duì)象操作。在過(guò)程中使用的全局變量應(yīng)該在過(guò)程起始處的聲明部分中標(biāo)識(shí)出來(lái)。此外,應(yīng)該用 ByVal 將參數(shù)傳遞給 Sub 過(guò)程及 function 過(guò)程,除非明顯地需要改變已傳遞的參數(shù)值。

隨著工程大小的增長(zhǎng),劃分變量范圍的工作也迅速增加。在類型前綴的前面放置單字母范圍前綴標(biāo)明了這種增長(zhǎng),但變量名的長(zhǎng)度并沒(méi)有增加很多。

變量范圍前綴

范圍前綴例子
全局ggstrUserName
模塊級(jí)mmblnCalcInProgress
本地到過(guò)程無(wú)dblVelocity

如果一個(gè)變量在標(biāo)準(zhǔn)模塊或窗體模塊中被聲明為 Public,那么該變量具有全局范圍。如果一個(gè)變量在標(biāo)準(zhǔn)模塊或窗體模塊中被分別聲明為 Private,那么該變量有模塊級(jí)范圍。

注意一致性是卓有成效地使用這種技術(shù)的關(guān)鍵;Visual Basic 中的語(yǔ)法檢查器不會(huì)捕捉以 "p." 開頭的模塊級(jí)變量。

常量
常量名的主體是大小寫混合的,每個(gè)單詞的首字母大寫。盡管標(biāo)準(zhǔn) Visual Basic 常量不包含數(shù)據(jù)類型和范圍信息,但是象 i、s、g 和 m 這樣的前綴對(duì)于理解一個(gè)常量的值和范圍還是很有用的。對(duì)于常量名,應(yīng)遵循與變量相同的規(guī)則。例如:

mintUserListMax   '對(duì)用戶列表的最大限制                  '(整數(shù)值,本地到模塊)gstrNewLine       '新行字符                  '(字符串,應(yīng)用程序全局使用)

變量
聲明所有的變量將會(huì)節(jié)省編程時(shí)間,因?yàn)殒I入操作引起的錯(cuò)誤減少了(例如,究竟是 aUserNameTmp,還是 sUserNameTmp,還是 sUserNameTemp)。在“選項(xiàng)”對(duì)話框的“編輯器”標(biāo)簽中,復(fù)選“要求變量聲明”選項(xiàng)。Option Explicit 語(yǔ)句要求在 Visual Basic 程序中聲明所有的變量。

應(yīng)該給變量加前綴來(lái)指明它們的數(shù)據(jù)類型。而且前綴可以被擴(kuò)展,用來(lái)指明變量范圍,特別是對(duì)大型程序。

用下列前綴來(lái)指明一個(gè)變量的數(shù)據(jù)類型。

變量數(shù)據(jù)類型

數(shù)據(jù)類型前綴例子
String (字符串類型)strstrFName
Integer (短整數(shù)類型)intintQuantity
Long (長(zhǎng)整數(shù)類型)lnglngDistance
Single (單精度浮點(diǎn)數(shù)類型)sngsngAverage
Double (雙精度浮點(diǎn)數(shù)類型)dbldblTolerance
Boolean (布爾類型)blnblnFound
Byte (字節(jié)類型)bytbytRasterData
Date (日期類型)dtedteNow
Currency (貨幣計(jì)算與定點(diǎn)計(jì)算類型)curcurRevenue
Object (對(duì)象類型)objobjCurrent
Variant (變體類型)vntvntCheckSum

描述變量和過(guò)程名

變量或過(guò)程名的主體應(yīng)該使用大小寫混合形式,并且應(yīng)該足夠長(zhǎng)以描述它的作用。而且,函數(shù)名應(yīng)該以一個(gè)動(dòng)詞起首,如 InitNameArray 或 CloseDialog。

對(duì)于頻繁使用的或長(zhǎng)的項(xiàng),推薦使用標(biāo)準(zhǔn)縮略語(yǔ)以使名稱的長(zhǎng)度合理化。一般來(lái)說(shuō),超過(guò) 32 個(gè)字符的變量名在 VGA 顯示器上讀起來(lái)就困難了。

當(dāng)使用縮略語(yǔ)時(shí),要確保它們?cè)谡麄€(gè)應(yīng)用程序中的一致性。在一個(gè)工程中,如果一會(huì)兒使用 Cnt, 一會(huì)兒使用 Count,將導(dǎo)致不必要的混淆。

用戶定義的類型
在一項(xiàng)有許多用戶定義類型的大工程中,常常有必要給每種類型一個(gè)它自己的三個(gè)字符的前綴。如果這些前綴是以 "u" 開始的,那么當(dāng)用一個(gè)用戶定義類型來(lái)工作時(shí),快速識(shí)別這些類型是很容易的。例如,ucli 可以被用來(lái)作為一個(gè)用戶定義的客戶類型變量的前綴。

[返回索引]

4、在簡(jiǎn)單的選擇條件情況下,使用IIf()函數(shù)

羅索的代碼:
If nNum = 0 Then
  sName = "sancy"
Else
  sName = "Xu"
End If

簡(jiǎn)單的代碼:
sName=IIf(nNum=0,"sancy","Xu")

5、盡量使用Debug.Print進(jìn)行調(diào)試

在很多初學(xué)者的調(diào)試中,用MsgBox來(lái)跟蹤變量值.其實(shí)用Debug.Print不僅可以達(dá)到同樣的功效,而且在程序最后編譯過(guò)程中,會(huì)被忽略.而MsgBox必須手動(dòng)注釋或刪除.

通常:
MsgBox nName

應(yīng)該:
Debug.Print nName

6、在重復(fù)對(duì)某一對(duì)象的屬性進(jìn)行修改時(shí),盡量使用With....End With

通常:
Form1.Height = 5000
Form1.Width = 6000
Form1.Caption = "This is MyLabel"

應(yīng)該:
With Form1
  .Height = 5000
  .Width = 6000
  .Caption = "This is MyLabel"
End With
這種結(jié)構(gòu)程序執(zhí)行效率比較高,特別在循環(huán)語(yǔ)句里。

7、MsgBox中盡量使用消息圖標(biāo),這樣程序比較有規(guī)范

一般來(lái)說(shuō)

vbInformation 用來(lái)提示確認(rèn)或成功操作的消息

vbExclamation 用來(lái)提示警告的消息

vbCritical 用來(lái)提示危機(jī)情況的消息

vbQuestion 用來(lái)提示詢問(wèn)的消息

[返回索引]

8、在可能的情況下使用枚舉

枚舉的格式為
[Public | Private] Enum name
membernam
e
[= constantexpression]
membername
[= constantexpression]
....
End Enum

Enum 語(yǔ)句包含下面部分:

部分描述
Public可選的。表示該 Enum 類型在整個(gè)工程中都是可見的。Enum 類型的缺省情況是 Public
Private可選的。表示該 Enum 類型只在所聲明的模塊中是可見的。
name必需的。該 Enum 類型的名稱。name 必須是一個(gè)合法的 Visual Basic 標(biāo)識(shí)符,在定義該 Enum 類型的變量或參數(shù)時(shí)用該名稱來(lái)指定類型。
membername必需的。用于指定該 Enum 類型的組成元素名稱的合法 Visual Basic 標(biāo)識(shí)符。
constantexpression可選的。元素的值(為 Long 類型)。可以是別的 Enum 類型。如果沒(méi)有指定 constantexpression,則所賦給的值或者是 0(如果該元素是第一個(gè) membername),或者比其直接前驅(qū)的值大 1。

說(shuō)明
所謂枚舉變量,就是指用 Enum 類型定義的變量。變量和參數(shù)都可以定義為 Enum 類型。Enum 類型中的元素被初始化為 Enum 語(yǔ)句中指定的常數(shù)值。所賦給的值可以包括正數(shù)和負(fù)數(shù),且在運(yùn)行時(shí)不能改變。例如:

Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum

Enum 語(yǔ)句只能在模塊級(jí)別中出現(xiàn)。定義 Enum 類型后,就可以用它來(lái)定義變量,參數(shù)或返回該類型的過(guò)程。不能用模塊名來(lái)限定 Enum 類型。類模塊中的 Public Enum 類型并不是該類的成員;只不過(guò)它們也被寫入到類型庫(kù)中。在標(biāo)準(zhǔn)模塊中定義的 Enum 類型則不寫到類型庫(kù)中。具有相同名字的 Public Enum 類型不能既在標(biāo)準(zhǔn)模塊中定義,又在類模塊中定義,因?yàn)樗鼈児蚕硐嗤拿臻g。若不同的類型庫(kù)中有兩個(gè) Enum 類型的名字相同,但成員不同,則對(duì)這種類型的變量的引用,將取決于哪一個(gè)類型庫(kù)具有更高的引用優(yōu)先級(jí)。

不能在 With 塊中使用 Enum 類型作為目標(biāo)。

Enum 語(yǔ)句示例
下面的示例演示用 Enum 語(yǔ)句定義一個(gè)命名常數(shù)的集合。在本例中是一些可以選擇的顏色常數(shù)用于設(shè)計(jì)數(shù)據(jù)庫(kù)的數(shù)據(jù)輸入窗體。

Public Enum InterfaceColors
icMistyRose = &HE1E4FF&
icSlateGray = &H908070&
icDodgerBlue = &HFF901E&
icDeepSkyBlue = &HFFBF00&
icSpringGreen = &H7FFF00&
icForestGreen = &H228B22&
icGoldenrod = &H20A5DA&
icFirebrick = &H2222B2&
End Enum

好處是加快編程速度

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 疏附县| 五家渠市| 恭城| 静宁县| 仲巴县| 三门县| 卢龙县| 和平区| 河间市| 香格里拉县| 平泉县| 潢川县| 探索| 昌乐县| 同德县| 天镇县| 芦溪县| 大余县| 建昌县| 河南省| 莎车县| 东方市| 松原市| 桦川县| 涟水县| 漳州市| 图木舒克市| 安丘市| 沁水县| 原阳县| 武平县| 长宁县| 肥乡县| 崇仁县| 封开县| 眉山市| 大冶市| 新昌县| 达尔| 新宁县| 桐柏县|