全面概括VB.NET編程七步通
經(jīng)過長時間學(xué)習(xí)VB.NET編程,在編程中總結(jié)了一些VB.NET編程的良好規(guī)范,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
1"&"替換"+"
2變量命名大小寫,語句錯落有秩,源代碼維護(hù)方面
3請養(yǎng)成以下的“對象命名約定”良好習(xí)慣
4在簡單的選擇條件情況下,使用IIf()函數(shù)
5盡量使用Debug.Print進(jìn)行調(diào)試
6在重復(fù)對某一對象的屬性進(jìn)行修改時,盡量使用With....End With
7MsgBox中盡量使用消息圖標(biāo),這樣程序比較有規(guī)范
8在可能的情況下使用枚舉
1、"&"替換"+"
在很多人的編程語言中,用“+”來連接字符串,這樣容易導(dǎo)致歧義。良好的習(xí)慣是用“&”來連接字符串.
不正確:
- Dim sMessage As String
- sMessage = "1" + "2"
正確:
- Dim sMessage As String
- sMessage = "1" & "2"
注意:"&"的后面有個空格
2、變量命名大小寫,語句錯落有秩,源代碼維護(hù)方面
下面大家比較一下以下兩段代碼:
讀懂難度很大的代碼:
- Dim SNAME As String
- Dim NTURN As Integer
- If NTURN = 0 Then
- If SNAME = "vbeden" Then
- Do While NTURN < 4
- NTURNNTURN = 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
- nTurnnTurn = nTurn + 1
- Loop
- End If
- End If
3、請養(yǎng)成以下的“對象命名約定”良好習(xí)慣推薦使用的控件前綴
控件類型 前綴 例子
- 3D Panel pnl pnlGroup
- ADO Data ado adoBiblio
- Animated button ani aniMailBox
- Check box chk chkReadOnly
- Combo box, drop-down list box cbo cboEnglish
- Command button cmd cmdExit
- Common dialog dlg dlgFileOpen
- Communications com comFax
- Control (當(dāng)特定類型未知時,在過程中所使用的) ctr ctrCurrent
- Data dat datBiblio
- Data-bound combo box dbcbo dbcboLanguage
- Data-bound grid dbgrd dbgrdQueryResult
- Data-bound list box dblst dblstJobType
- Data combo dbc dbcAuthor
- Data grid dgd dgdTitles
- Data list dbl dblPublisher
- Data repeater drp drpLocation
- Date picker dtp dtpPublished
- Directory list box dir dirSource
- Drive list box drv drvTarget
- File list box fil filSource
- Flat scroll bar fsb fsbMove
- Form frm frmEntry
- Frame fra fraLanguage
- Gauge gau gauStatus
- Graph gra graRevenue
- Grid grd grdPrices
- Hierarchical flexgrid flex flexOrders
- Horizontal scroll bar hsb hsbVolume
- Image img imgIcon
- Image combo imgcbo imgcboProduct
- ImageList ils ilsAllIcons
- Label lbl lblHelpMessage
- Lightweight check box lwchk lwchkArchive
- Lightweight combo box lwcbo lwcboGerman
- Lightweight command button lwcmd lwcmdRemove
- Lightweight frame lwfra lwfraSaveOptions
- Lightweight horizontal scroll bar lwhsb lwhsbVolume
- Lightweight list box lwlst lwlstCostCenters
- Lightweight option button lwopt lwoptIncomeLevel
- Lightweight text box lwtxt lwoptStreet
- Lightweight vertical scroll bar lwvsb lwvsbYear
- Line lin linVertical
- List box lst lstPolicyCodes
- ListView lvw lvwHeadings
- MAPI message mpm mpmSentMessage
- MAPI session mps mpsSession
- MCI mci mciVideo
- Menu mnu mnuFileOpen
- Month view mvw mvwPeriod
- MS Chart ch chSalesbyRegion
- MS Flex grid msg msgClients
- MS Tab mst mstFirst
- OLE container ole oleWorksheet
- Option button opt optGender
- Picture box pic picVGA
- Picture clip clp clpToolbar
- ProgressBar prg prgLoadFile
- Remote Data rd rdTitles
- RichTextBox rtf rtfReport
- Shape shp shpCircle
- Slider sld sldScale
- Spin spn spnPages
- StatusBar sta staDateTime
- SysInfo sys sysMonitor
- TabStrip tab tabOptions
- Text box txt txtLastName
- Timer tmr tmrAlarm
- Toolbar tlb tlbActions
- TreeView tre treOrganization
- UpDown upd updDirection
- Vertical scroll bar vsb vsbRate
推薦使用的數(shù)據(jù)訪問對象 (DAO) 的前綴用下列前綴來指示數(shù)據(jù)訪問對象
數(shù)據(jù)庫對象 前綴 例子
- Container con conReports
- Database db dbAccounts
- DBEngine dbe dbeJet
- Document doc docSalesReport
- Field fld fldAddress
- Group grp grpFinance
- Index ix idxAge
- Parameter prm prmJobCode
- QueryDef qry qrySalesByRegion
- Recordset rec recForecast
- Relation rel relEmployeeDept
- TableDef tbd tbdCustomers
- User usr usrNew
- Workspace wsp wspMine
應(yīng)用程序頻繁使用許多菜單控件,對于這些控件具備一組唯一的命名約定很實用。除了最前面 "mnu" 標(biāo)記以外,菜單控件的前綴應(yīng)該被擴(kuò)展:對每一級嵌套增加一個附加前綴,將最終的菜單的標(biāo)題放在名稱字符串的最后。下表列出了一些例子。
推薦使用的菜單前綴
菜單標(biāo)題序列 菜單處理器名稱
- File Open mnuFileOpen
- File Send Email mnuFileSendEmail
- File Send Fax mnuFileSendFax
- Format Character mnuFormatCharacter
- Help Contents mnuHelpContents
#p#
當(dāng)使用這種命名約定時,一個特定的菜單組的所有成員一個接一個地列在 Visual Basic 的“屬性”窗口中。而且,菜單控件的名字清楚地表示出它們所屬的菜單項。為其它控件選擇前綴對于上面沒有列出的控件,應(yīng)該用唯一的由兩個或三個字符組成的前綴使它們標(biāo)準(zhǔn)化,以保持一致性。只有當(dāng)需要澄清時,才使用多于三個字符的前綴。常量和變量命名約定除了對象之外,常量和變量也需要良好格式的命名約定。本節(jié)列出了 Visual Basic 支持的常量和變量的推薦約定。并且討論標(biāo)識數(shù)據(jù)類型和范圍的問題。
變量應(yīng)該總是被定義在盡可能小的范圍內(nèi)。全局 (Public) 變量可以導(dǎo)致極其復(fù)雜的狀態(tài)機(jī)構(gòu),并且使一個應(yīng)用程序的邏輯非常難于理解。全局變量也使代碼的重用和維護(hù)更加困難。Visual Basic 的變量可以有下列范圍范圍 聲明位置 可見位置過程級 過程,子過程或函數(shù)過程中的 ‘Private’ 在聲明它的過程中模塊級 窗體或代碼模塊(.frm、.bas )的聲明部分中的 ‘Private’ 窗體或代碼模塊中的每一個過程全局 代碼模塊(.bas)的聲明部分中的 ‘Public’ 應(yīng)用程序中的每一處在 Visual Basic 的應(yīng)用程序中,只有當(dāng)沒有其它方便途徑在窗體之間共享數(shù)據(jù)時才使用全局變量。當(dāng)必須使用全局變量時,在一個單一模塊中聲明它們,并按功能分組。給這個模塊取一個有意義的名稱,以指明它的作用,如 Public.bas。
較好的編碼習(xí)慣是盡可能寫模塊化的代碼。例如,如果應(yīng)用程序顯示一個對話框,就把要完成這一對話任務(wù)所需要的所有控件和代碼放在單一的窗體中。這有助于將應(yīng)用程序的代碼組織在有用的組件中,并減小它運(yùn)行時的開銷。
除了全局變量(應(yīng)該是不被傳遞的),過程和函數(shù)應(yīng)該僅對傳遞給它們的對象操作。在過程中使用的全局變量應(yīng)該在過程起始處的聲明部分中標(biāo)識出來。此外,應(yīng)該用 ByVal 將參數(shù)傳遞給 Sub 過程及 function 過程,除非明顯地需要改變已傳遞的參數(shù)值。隨著工程大小的增長,劃分變量范圍的工作也迅速增加。在類型前綴的前面放置單字母范圍前綴標(biāo)明了這種增長,但變量名的長度并沒有增加很多。
變量范圍前綴
范圍 前綴 例子
全局 g gstrUserName
模塊級 m mblnCalcInProgress
本地到過程 無 dblVelocity
如果一個變量在標(biāo)準(zhǔn)模塊或窗體模塊中被聲明為 Public,那么該變量具有全局范圍。如果一個變量在標(biāo)準(zhǔn)模塊或窗體模塊中被分別聲明為 Private,那么該變量有模塊級范圍。
注意: 一致性是卓有成效地使用這種技術(shù)的關(guān)鍵;Visual Basic 中的語法檢查器不會捕捉以 "p." 開頭的模塊級變量。
常量
常量名的主體是大小寫混合的,每個單詞的首字母大寫。盡管標(biāo)準(zhǔn) Visual Basic 常量不包含數(shù)據(jù)類型和范圍信息,但是象 i、s、g 和 m 這樣的前綴對于理解一個常量的值和范圍還是很有用的。對于常量名,應(yīng)遵循與變量相同的規(guī)則。例如:
- mintUserListMax '對用戶列表的最大限制
- '(整數(shù)值,本地到模塊)
- gstrNewLine '新行字符
- '(字符串,應(yīng)用程序全局使用)
變量
聲明所有的變量將會節(jié)省編程時間,因為鍵入操作引起的錯誤減少了(例如,究竟是 aUserNameTmp,還是 sUserNameTmp,還是 sUserNameTemp)。在“選項”對話框的“編輯器”標(biāo)簽中,復(fù)選“要求變量聲明”選項。Option Explicit 語句要求在 Visual Basic 程序中聲明所有的變量。
應(yīng)該給變量加前綴來指明它們的數(shù)據(jù)類型。而且前綴可以被擴(kuò)展,用來指明變量范圍,特別是對大型程序。
用下列前綴來指明一個變量的數(shù)據(jù)類型。
變量數(shù)據(jù)類型
數(shù)據(jù)類型 前綴 例子
- String (字符串類型) str strFName
- Integer (短整數(shù)類型) int intQuantity
- Long (長整數(shù)類型) lng lngDistance
- Single (單精度浮點(diǎn)數(shù)類型) sng sngAverage
- Double (雙精度浮點(diǎn)數(shù)類型) dbl dblTolerance
- Boolean (布爾類型) bln blnFound
- Byte (字節(jié)類型) byt bytRasterData
- Date (日期類型) dte dteNow
- Currency (貨幣計算與定點(diǎn)計算類型) cur curRevenue
- Object (對象類型) obj objCurrent
- Variant (變體類型) vnt vntCheckSum
描述變量和過程名
變量或過程名的主體應(yīng)該使用大小寫混合形式,并且應(yīng)該足夠長以描述它的作用。而且,函數(shù)名應(yīng)該以一個動詞起首,如 InitNameArray 或 CloseDialog。
對于頻繁使用的或長的項,推薦使用標(biāo)準(zhǔn)縮略語以使名稱的長度合理化。一般來說,超過 32 個字符的變量名在 VGA 顯示器上讀起來就困難了。
當(dāng)使用縮略語時,要確保它們在整個應(yīng)用程序中的一致性。在一個工程中,如果一會兒使用 Cnt, 一會兒使用 Count,將導(dǎo)致不必要的混淆。
用戶定義的類型在一項有許多用戶定義類型的大工程中,常常有必要給每種類型一個它自己的三個字符的前綴。如果這些前綴是以 "u" 開始的,那么當(dāng)用一個用戶定義類型來工作時,快速識別這些類型是很容易的。例如,ucli 可以被用來作為一個用戶定義的客戶類型變量的前綴。
4、在簡單的選擇條件情況下,使用IIf()函數(shù)
羅索的代碼:
- If nNum = 0 Then
- sName = "sancy"
- Else
- sName = "Xu"
- End If
簡單的代碼:
- sName=IIf(nNum=0,"sancy","Xu")
5、盡量使用Debug.Print進(jìn)行調(diào)試
在很多初學(xué)者的調(diào)試中,用MsgBox來跟蹤變量值.其實用Debug.Print不僅可以達(dá)到同樣的功效,而且在程序最后編譯過程中,會被忽略.而MsgBox必須手動注釋或刪除.
通常:
MsgBox nName
應(yīng)該:
Debug.Print nName
6、在重復(fù)對某一對象的屬性進(jìn)行修改時,盡量使用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)語句里。
7、MsgBox中盡量使用消息圖標(biāo),這樣程序比較有規(guī)范
一般來說
- vbInformation 用來提示確認(rèn)或成功操作的消息
- vbExclamation 用來提示警告的消息
- vbCritical 用來提示危機(jī)情況的消息
- vbQuestion 用來提示詢問的消息
8、在可能的情況下使用枚舉
枚舉的格式為
- [Public | Private] Enum name
- membername [= constantexpression_r_r_r]
- membername [= constantexpression_r_r_r]
- ....
- End Enum
Enum 語句包含下面部分:
部分 描述
Public 可選的。表示該 Enum 類型在整個工程中都是可見的。Enum 類型的缺省情況是 Public。
Private 可選的。表示該 Enum 類型只在所聲明的模塊中是可見的。
name 必需的。該 Enum 類型的名稱。name 必須是一個合法的 Visual Basic 標(biāo)識符,在定義該 Enum 類型的變量或參數(shù)時用該名稱來指定類型。
membername 必需的。用于指定該 Enum 類型的組成元素名稱的合法 Visual Basic 標(biāo)識符。
constantexpression_r_r_r 可選的。元素的值(為 Long 類型)??梢允莿e的 Enum 類型。如果沒有指定 constantexpression_r_r_r,則所賦給的值或者是 0(如果該元素是第一個 membername),或者比其直接前驅(qū)的值大 1。
說明
所謂枚舉變量,就是指用 Enum 類型定義的變量。變量和參數(shù)都可以定義為 Enum 類型。Enum 類型中的元素被初始化為 Enum 語句中指定的常數(shù)值。所賦給的值可以包括正數(shù)和負(fù)數(shù),且在運(yùn)行時不能改變。例如:
- Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum
Enum 語句只能在模塊級別中出現(xiàn)。定義 Enum 類型后,就可以用它來定義變量,參數(shù)或返回該類型的過程。不能用模塊名來限定 Enum 類型。類模塊中的 Public Enum 類型并不是該類的成員;只不過它們也被寫入到類型庫中。在標(biāo)準(zhǔn)模塊中定義的 Enum 類型則不寫到類型庫中。具有相同名字的 Public Enum 類型不能既在標(biāo)準(zhǔn)模塊中定義,又在類模塊中定義,因為它們共享相同的命名空間。若不同的類型庫中有兩個 Enum 類型的名字相同,但成員不同,則對這種類型的變量的引用,將取決于哪一個類型庫具有更高的引用優(yōu)先級。
不能在 With 塊中使用 Enum 類型作為目標(biāo)。
Enum 語句示例下面的示例演示用 Enum 語句定義一個命名常數(shù)的集合。在本例中是一些可以選擇的顏色常數(shù)用于設(shè)計數(shù)據(jù)庫的數(shù)據(jù)輸入窗體。
- Public Enum InterfaceColors
- icMistyRose = &HE1E4FF&
- icSlateGray = &H908070&
- icDodgerBlue = &HFF901E&
- icDeepSkyBlue = &HFFBF00&
- icSpringGreen = &H7FFF00&
- icForestGreen = &H228B22&
- icGoldenrod = &H20A5DA&
- icFirebrick = &H2222B2&
- End Enum
好處是加快VB.NET編程速度
【編輯推薦】