公司軟體部VB組程式碼撰寫暫行約定 (轉)
:namespace prefix = o />
一、變數和
中的變數遵循匈牙利表示法,即“字首+變數含義”,變數的含義為一個或多個英文單詞,每個單詞的第一個字母大寫,不要用漢語拼音代替。變數字首為三個小寫字母示意其型別,所需新增的字首遵循在MSDN中的建議。列表如下:
基本資料型別
變數型別
字首
示例
Boolean
bln
blnFound
Byte
byt
bytRasterData
Collection
col
colWidgets
Currency
cur
curRevenue
Date (Time)
dtm
dtmStart
Double
l
dblTolerance
Error
err
errOrderNum
Integer
int
intQuantity
Long
lng
lngDistance
Object
obj
objCurrent
Single
sng
sngAverage
String
str
strFName
User-defined type
udt
udtEmployee
Variant
vnt
vntCheckSum
或窗體、模組物件
控制元件型別
字首
示例
3D Panel
pnl
pnlGroup
ADO Data
ado
adoBiblio
Animated button
ani
aniBox
Check box
chk
chkReadOnly
Combo box, drop-down list box
cbo
cboEnglish
Command button
cmd
cmdExit
Common dialog
dlg
dlgFileOpen
Communications
comFax
Control (在過程中使用的型別未明的控制元件變數)
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
dir
Drive list box
drv
drvTarget
File list box
fil
filSource
Flat scroll bar
fsb
fsbMove
Fo
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
M message
mpm
mpmSentMessage
MAPI session
mps
mpsSession
MCI
mci
mciVo
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 cl
clp
clpToolbar
ProgressBar
prg
prgLoadFile
Remote Data
rd
rdTitles
RichTextBox
rtf
rtfReport
Shape
shp
shpCircle
Slider
sld
sldScale
Spin
spn
spnPages
Statar
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
物件
資料庫物件
字首
示例
Container
con
conReports
Database
db
ccounts
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
除此之外,還要對於一些不同的級別的變數加額外的字首,舉例如下:
級別
字首
示例
全域性變數
g
gstrUserName
模組級變數
m
mblnCalcInProgress
過程級變數
None
dblVelocity
對於使用type關鍵字定義的資料型別,在三個字母的字首前再加u。例如:一個使用者定義的叫Client型別的變數,其字首為ucli。
關於變數使用方面,建議如下:
1、變數要先宣告再使用(在窗體程式碼的第一行加上Option Explicit,來禁止未宣告變數的,或者在選單Tools->Options->Editor中選中Require Variable Declaration項。)
2、儘量使用Long型的變數來代替Integer型別,這樣做可以減少一些資料的錯誤,而且,在平臺上,處理32位的資料比16位的資料速度更快。
3、儘量少用Variant變數,儘可能地給出每一個變數明確的型別
4、儘量不在API宣告中使用As Any,如果遇到其預設的引數為As Any的情況,則針對每一個所需的引數型別宣告該API,例如ReadFile函式預設的宣告為:
Public Declare Function ReadFile Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
小組成員須將其改為:
Public Declare Function ReadFileByt Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Byte, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
Public Declare Function ReadFileInt Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Integer, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
Public Declare Function ReadFileLng Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Long, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
5、不要將型別轉換的工作交給VB自動去做,而使用以下型別轉換函式
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
二、窗體佈局
窗體內各個控制元件的佈局,建議如下:
1、所有與窗體上、下、左、右四條邊界相鄰的控制元件與窗體的邊緣相距120緹
2、各個控制元件之間的間距為:相關控制元件60緹,非相關控制元件120緹
3、按鈕控制元件大小建議為高300緹,長1200緹,這也是操作預設按鈕的大小
4、各個控制元件的字型建議為宋體五號字
三、程式碼
1、程式的啟動物件
程式一率從Main()函式開始(選擇選單View->Project Explorer,在工程視窗內右鍵點選當前專案,選擇選單“… Properties”->General,在Startup Object下拉框中選擇sub main)
2、程式碼縮排與間距
每個單位的程式碼縮排為一個TAB,非相關程式碼留一行空白的間隔,例如:
Private Function GetMax(Byref lngArray() As Long) As Long
GetMax=0
Dim lngMax As Long
Dim lngCount as long
For lngCount =0 to Ubound(lngArray)
If lngArray (lngCount)>lngMax Then
lngMax=lngArray(lngCount)
End If
Next
End Function
3、註譯
程式的註譯越詳盡,越仔細越好。以下提及的,必須加註譯。
程式中宣告的每一個變數,能加上註譯最好,至少用來運算或者儲存關鍵資料的變數必須加上註譯。
對於每一段邏輯上實現某個基本功能的幾句程式碼,最好在其上一行加上簡單註譯。
對於每一個自定義的函式,不管大小都必須加上註譯,而且註譯的格式如下:
'******************************************************
'
'函式所實現的功能
'函式的引數1的含義:XXXXX
'函式的引數2的含義:XXXXX
'……
'函式返回值所代表的錯誤資訊:XXXXX(函式儘可能宣告為Function,不要宣告為Sub,
'函式的返回值為0表示執行成功,為其它值表示執行失敗)
'
'******************************************************
Public(Private) Function ForExample(……………………) As Long
'…………………………………………
End Function
4、錯誤處理(未定)
在Main()函式或主窗體Load過程中新增如下程式碼:
'******************************************************
'
'開啟錯誤日誌,在Form_Unload()中關閉
'
'******************************************************
Dim strExePath As String
If Right(App.Path, 1) = "" Then
strExePath = App.Path
Else
strExePath = App.Path & ""
End If
intErrLogFileHandle = FreeFile()
Open strExePath + "Err.log" For Append Shared As intErrLogFileHandle
在主窗體退出函式中新增如下程式碼:
'******************************************************
'
'關閉錯誤日誌檔案
'
'******************************************************
Close #intErrLogFileHandle
在某個Module中新增:
'******************************************************
'
'寫入錯誤日誌
'
'******************************************************
Public Sub WriteErrLogFile(ByVal strSub As String, ByVal strErr As String)
Print #intErrLogFileHandle, Date, Time, strSub, strErr
End Sub
在每個過程或自定義的函式中,使用如下的系統錯誤捕獲機制:
Public Function ForExample(…………) As Long
On Error Goto FuncError
ForExample=True
………………………
………………………
Exit Function
FuncError:
ForExample=False
WriteErrLogFile " ForExample ", "錯誤號:" & Err.Number & ",錯誤源:" & Err.Source & ",錯誤描述:" & Err.Description
MsgBox "……… ", vbCritical
'在此作資源回收工作
End Function
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996740/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 軟體測試人員如何撰寫簡歷才能提高面試邀約率?面試
- 寶付撰寫java基礎程式碼Java
- 中國軟體行業基本公約 (轉)行業
- 用VB編寫抽獎程式 (轉)
- vb開發通訊軟體 (轉)
- 三個在 Fedora 平臺上撰寫 Markdown 的軟體
- matlab程式碼轉exe可執行軟體Matlab
- 用VB編寫非同步多執行緒下載程式 (轉)非同步執行緒
- 用VB編寫標準CGI程式 (轉)
- vb開發通訊軟體(cloud轉貼) (轉)Cloud
- 利用VB編寫螢幕保護程式 (轉)
- 用VB寫高效的影像處理程式 (轉)
- 想用就用,VB基礎程式碼 (轉)
- 一個用VB編寫的監控別人上網的軟體例子 (轉)
- vb下傳送郵件,一行程式碼搞定 (轉)行程
- 如何組織軟體模組的程式碼結構?
- VB讀寫ini檔案 (轉)
- 軟體開發專案文件系列之九如何撰寫測試方案
- 軟體公司的簡約“範兒” 客戶的福音
- 用友組建小型管理軟體事業部王文京力捧資訊化(轉)
- VB.Net中文教程(5)程式多重定義 (轉)
- VB 程式大揭秘 (轉)
- 軟體開發專案文件系列之十六如何撰寫系統運維方案運維
- 軟體開發專案文件系列之二如何撰寫專案建設方案
- 要用VB做多媒體程式的同志必看... (轉)
- 程式碼換膚術(一)——C#和VB (轉)C#
- VB.net 跟 C# 的程式碼轉換C#
- [軟體人生]程式設計師轉行,需要麼?程式設計師
- 契約鎖與多家軟體行業夥伴達成戰略合作,攜手助力組織數字化轉型行業
- 計算機資訊系統保密管理暫行規定 (轉)計算機
- 軟體開發專案文件系列之五如何撰寫需求規格說明書
- 軟體開發專案文件系列之十五如何撰寫專案結項報告
- 網站建設專案合同撰寫注意點(轉)網站
- 如何撰寫技術文件
- 撰寫合格的REST APIRESTAPI
- 論文撰寫心得(一)
- VB.NET聊天程式 (轉)
- 廣州南沙軟體園面試試題及答案(VB、ASP部分) (轉)面試