软件编写规范VB.docx
- 文档编号:11559927
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:16
- 大小:28.33KB
软件编写规范VB.docx
《软件编写规范VB.docx》由会员分享,可在线阅读,更多相关《软件编写规范VB.docx(16页珍藏版)》请在冰豆网上搜索。
软件编写规范VB
软件编写规范(VB)
(V1.1)
编制单位:
XXXX
项目名称:
XXXX系统
项目代号:
XXX_ZYZQ
文档名称:
软件编写规范(VB)
文档审核:
XXX
编制日期:
20XX-05-29
修订纪录:
日期
变动记录
编写
审核
20XX-12-19
初稿
XXX
XXX
20XX-05-29
修正
XXX
XXX
目录
一模块划分4
1公用模块的提取4
2工程模块的组成4
2.1应用程序工程(StandardEXE)4
2.2子模块工程(ActiveXDLL)4
2.3子模块界面实现工程(ActiveX控件)5
2.4每个工程应包括以下五个基本模块(统一命名规范)5
3工程文件目录结构5
3.1frm5
3.2bas5
3.3cls6
3.4res6
4资源的管理6
二命名规范6
1命名的规范6
1.1原则6
2模块命名规范6
2.1工程命名规范6
2.2窗体命名规范7
2.3对象命名约定8
2.4常量和变量命名约定11
2.5函数命名约定12
三模块化编码约定12
1注释规范12
2变量声明13
3参数声明13
4窗体控件初始化13
5前后台交互功能13
四GUI界面规范14
五GUI操作控制规范15
1GUI通用操作要求15
2对输入项的控制和检查15
六VB编程建议15
一模块划分
1公用模块的提取
Ø在程序框架设计时,应对公用的模块(包括类型、函数)进行提取,生成所有模块使用的公用模块。
Ø公用模块分为公用函数定义、公用类型定义(class)、公用变量定义三个ActiveXDLL工程。
Ø公用函数类(CrootPubFunc.DLL)包括核心业务以及与具体业务无关的函数,类命名为pubFunc,各个模块XX所用的公用函数,类命名为pubFuncXX
Ø公用类型类(CrootPubType.DLL)是与业务相关的类型定义,如XX信息等。
在VB中可用Type、Class来定义类型,但由于Type不能在ActiveX模块之间传送,故要求公用的类型在ActiveXDLL以Class定义,在每个类中可以增加一些对自定义类型的操作方法,方便自定义类型的使用
Ø公用变量类(CrootPubVar.DLL)是各个模块所用到的公用信息,由主模块从后台取到,调用子模块时传入到子模块中。
若是多个子模块都会使用的公用信息,在主模块启动时就取到内存;若只是某一子模块使用的公用信息,则在第一次调用子模块时从后台取数据。
对数据量较大的公用信息(如xx列表),可考虑由主模块启动一个后台线程,利用GUI空闲时从后台取数据
Ø考虑公用变量在子模块之间传送的方式:
单一变量可定义为公用变量类的一个公用属性,对数组变量用Set/Get函数传送?
?
Ø公用模块类的命名约定:
由于ActiveX类名在注册表中限制为34个字符(包括模块名),类名应保持明确、简单,体现所表达的含义(可使用缩写,但要数据字典保持一致。
要求统一以C为前缀,不建议以cls为前缀)。
2工程模块的组成
2.1应用程序工程(StandardEXE)
Ø每个EXE程序对应VB一个StandardEXE工程的。
此工程为程序的主窗口程序,包括登录、退出、取公用信息、启动业务模块等功能。
但不包含业务模块的代码。
2.2子模块工程(ActiveXDLL)
Ø根据业务模块划分为多个子模块,每个子模块为一个VBActiveXDLL工程。
子模块工程由多个业务窗体、子模块所用的公用函数、公用类型定义、CMain类等组合,包括启动业务窗体、在模块间传送数据等功能。
但不包括具体业务逻辑实现,窗体的业务逻辑实现在构成该窗体的AcitveX控件中。
例如:
XXX_XX系统包括XXXX、客户管理等子模块,XXX子模块包括XXX、XXX等窗体
Ø子模块的CMain类的CallForm函数,根据入参窗体ID启动对应窗体,由主模块调用。
窗体ID和SSTAB功能ID是功能的唯一标识,与功能的菜单号无关
Ø子模块的每个窗体包括多个SSTAB功能页面,每个SSTAB页面由自定义的AcitveX控件实现该功能点的界面及业务逻辑代码。
2.3子模块界面实现工程(ActiveX控件)
Ø子模块的界面及业务逻辑代码在一个VBActiveX控件工程实现,每个SSTAB页面对应一个UserControl。
在每个SSTAB页面的标题定义SSTAB功能ID标识,窗体启动时根据柜员对该窗体有权限的SSTAB功能ID过滤SSTAB页面的显示
Ø每个控件应提供SetFirstFocus接口,用于子模块窗体在SSTAB_Click调用SetFirstFocus,把焦点置到控件窗体的第一个输入项
Ø每个控件应提供SendData接口,用于子模块窗体的“确定”时调用。
Ø
2.4每个工程应包括以下五个基本模块(统一命名规范)
ØmPubConst:
定义常量信息,不允许程序中出现含义可能变化的魔术数(magicnumber)
ØmPubFunc:
定义本模块所用的公用函数。
模块所使用的公用函数实现部分应在公用模块pubFuncXX中定义,此处是对公用模块函数的二次封装,以方便模块内调用
ØmPubFuncXX:
定义XX子模块所用的公用函数(如果本工程内又分为许多子模块)。
ØmPubAPI:
定义模块所用的WindowsAPI
ØmPubVar:
定义模块所用的公用变量
ØmPubInfo:
定义字符串提示类信息。
由于VB的资源管理器(VBresourceEditor)在查找、替换方面使用很不方便,故不建议把字符串信息放到资源管理器中。
3工程文件目录结构
3.1frm
窗体模块放于此目录下。
当工程的窗体较多时(越过20个),建议z对每个子模块建立一个子目录(目录名用中文,如“XX管理”),相关的窗体放于子目录下。
3.2bas
公用模块(公用函数,公用类型、公用变量)放于此目录下
3.3cls
公用类模块放于此目录下
3.4res
公用资源模块(提示信息等)放于此目录下
4资源的管理
Ø此处所说的资源,指的是VB程序中使用的字符串(提示信息)、图片、图标等。
Ø由于VB的资源管理器(VBresourceEditor)在查找、替换方面使用很不方便,故不建议把字符串信息放到资源管理器中。
建议统一在mPubInfo模块定义
Ø由于VB会把资源文件编译到EXE中,图片放到资源文件中会大大增加EXE的大小,故不建议把图片放到资源管理器中。
建议图片放在安装目录\Pic下,程序在使用图片时动态载入
二命名规范
1命名的规范
1.1原则
Ø简单、明确、好记
Ø若是采用缩写,各处的代码应保持一致。
变量命名应与数据字典保持一致
2模块命名规范
要求对象名和对应的文件名保持一致。
但对工程名例外,工程名为XX,工程文件名为prj_+XX。
例如:
窗体名为“ORDXXX”,对应文件名为“ORD_XXX.frm”;工程名为“XX系统”,对应文件名为“prj_XX系统.vbp”
2.1工程命名规范
(1)主模块工程(StandardEXE)命名
工程名:
模块名,工程文件名:
prj_+工程名。
例如:
CTSXX系统,工程名:
XX系统,工程文件名:
prj_XX系统
(2)子模块工程命名
工程名:
主模块名缩写_子模块名缩写,工程文件名:
prj_+工程名。
例如:
XX系统_XX子模块,工程名:
COU_NORD,工程文件名:
prj_COU_NORD。
全称:
XX_NormalOrder
(3)ActiveX控件工程命名(每个子模块对应一个ActiveX控件工程)
工程名:
主模块名缩写_子模块名缩写_CTL,工程文件名:
prj_+工程名。
2.2窗体命名规范
2.2.1普通窗体命名
以模块名的缩写字母打头_中文的窗体功能名,并存放在相应模块的frm目录下。
这样在VBProjectExplorer中同一模块的窗体显示在一起,较容易查找
2.2.2控件窗体命名(ActiveX控件实现子模块界面)
为该控件窗体对应的子功能名。
窗体控件所在的工程名可以看出所属的子模块
2.2.3窗体上的控件统一命名
(1)sstab
由于此控件在一个窗体上只有一个,为方便代码移植,统一命名为sstab1
(2)statusBar
由于此控件在一个窗体上只有一个,为方便代码移植,统一命名为statusBar1
(3)command
Ø确定(&S)
由于此控件在一个窗体上只有一个,为方便代码移植,统一命名为cmdSure
Ø关闭(&Q)
由于此控件在一个窗体上只有一个,为方便代码移植,统一命名为cmdQuit
2.3对象命名约定
2.3.1控件前缀
控件类型
前缀
例子
3DPanel
pnl
pnlGroup
ADOData
ado
adoBiblio
Animatedbutton
ani
aniMailBox
Checkbox
chk
chkReadOnly
Combobox,drop-downlistbox
cbo
cboEnglish
Commandbutton
cmd
cmdExit
Commondialog
dlg
dlgFileOpen
Communications
com
comFax
Control(当特定类型未知时,在过程中所使用的)
ctr
ctrCurrent
Data
dat
datBiblio
Data-boundcombobox
dbcbo
dbcboLanguage
Data-boundgrid
dbgrd
dbgrdQueryResult
Data-boundlistbox
dblst
dblstJobType
Datacombo
dbc
dbcAuthor
Datagrid
dgd
dgdTitles
Datalist
dbl
dblPublisher
Datarepeater
drp
drpLocation
Datepicker
dtp
dtpPublished
Directorylistbox
dir
dirSource
Drivelistbox
drv
drvTarget
Filelistbox
fil
filSource
Flatscrollbar
fsb
fsbMove
Form
frm
frmEntry
Frame
fra
fraLanguage
Gauge
gau
gauStatus
Graph
gra
graRevenue
Grid
grd
grdPrices
Hierarchicalflexgrid
flex
flexOrders
Horizontalscrollbar
hsb
hsbVolume
Image
img
imgIcon
Imagecombo
imgcbo
imgcboProduct
ImageList
ils
ilsAllIcons
Label
lbl
lblHelpMessage
Lightweightcheckbox
lwchk
lwchkArchive
Lightweightcombobox
lwcbo
lwcboGerman
Lightweightcommandbutton
lwcmd
lwcmdRemove
Lightweightframe
lwfra
lwfraSaveOptions
Lightweighthorizontalscrollbar
lwhsb
lwhsbVolume
Lightweightlistbox
lwlst
lwlstCostCenters
Lightweightoptionbutton
lwopt
lwoptIncomeLevel
Lightweighttextbox
lwtxt
lwoptStreet
Lightweightverticalscrollbar
lwvsb
lwvsbYear
Line
lin
linVertical
Listbox
lst
lstPolicyCodes
ListView
lvw
lvwHeadings
MAPImessage
mpm
mpmSentMessage
MAPIsession
mps
mpsSession
MCI
mci
mciVideo
Menu
mnu
mnuFileOpen
Monthview
mvw
mvwPeriod
MSChart
ch
chSalesbyRegion
MSFlexgrid
msg
msgClients
MSTab
mst
mstFirst
OLEcontainer
ole
oleWorksheet
Optionbutton
opt
optGender
Picturebox
pic
picVGA
Pictureclip
clp
clpToolbar
ProgressBar
prg
prgLoadFile
RemoteData
rd
rdTitles
RichTextBox
rtf
rtfReport
Shape
shp
shpCircle
Slider
sld
sldScale
Spin
spn
spnPages
StatusBar
sta
staDateTime
SysInfo
sys
sysMonitor
TabStrip
tab
tabOptions
Textbox
txt
txtLastName
Timer
tmr
tmrAlarm
Toolbar
tlb
tlbActions
TreeView
tre
treOrganization
UpDown
upd
updDirection
Verticalscrollbar
vsb
vsbRate
2.3.2为其它控件选择前缀
对于上面没有列出的控件,应该用唯一的由两个或三个字符组成的前缀使它们标准化,以保持一致性。
只有当需要澄清时,才使用多于三个字符的前缀。
2.3.3菜单前缀
应用程序频繁使用许多菜单控件,对于这些控件具备一组唯一的命名约定很实用。
除了最前面"mnu"标记以外,菜单控件的前缀应该被扩展:
对每一级嵌套增加一个附加前缀,将最终的菜单的标题放在名称字符串的最后。
下表列出了一些例子。
菜单标题序列
菜单处理器名称
FileOpen
mnuFileOpen
FileSendEmail
mnuFileSendEmail
当使用这种命名约定时,一个特定的菜单组的所有成员一个接一个地列在VisualBasic的“属性”窗口中。
而且,菜单控件的名字清楚地表示出它们所属的菜单项。
2.4常量和变量命名约定
2.4.1范围前缀
随着工程大小的增长,划分变量范围的工作也迅速增加。
在类型前缀的前面放置单字母范围前缀标明了这种增长,但变量名的长度并没有增加很多。
范围
前缀
例子
全局
g
gstrUserName
模块级
m
mblnCalcInProgress
本地到过程
无
dblVelocity
2.4.2类型前缀
在变量名称里包含变量类型后缀。
特别是针对全程变量,带有指定变量类型的后缀将节省大量的调试时间。
推荐的后缀:
前缀
类型
前缀
类型
int
integer
lng
long
str
string
num
numeric
cur
currency
var
variant
bln
boolean
dbl
double
sng
single
flt
float
byte
byte
Obj
object
ctl
control
U
用户定义的类型
2.4.3其他
Ø用相关的名词命名,若使用到动词,用其对应的形容词
Ø当使用缩略语时,要确保它们在整个应用程序中的一致性。
在一个工程中,如果一会儿使用Cnt,一会儿使用Count,将导致不必要的混淆。
变量命名应与数据字典保持一致
Ø使用大小写混合的变量名称,首字母小写,其它单词首字母大写
2.5函数命名约定
Ø函数名首字母大写
Ø函数采用动作性的名字,动词在前。
Ø自己定义的函数中,参数应使用ByVal或ByRef,显式指明参数的类型,验证参数。
参数名命名同变量。
三模块化编码约定
1注释规范
所有的过程和函数都应该以描述这段过程的功能的一段简明注释开始(这段例程干什么)。
这种描述不应该包括执行过程细节(它是怎么做的),因为这常常是随时间而变的,而且这种描述会导致不必要的注释维护工作,甚至更糟—成为错误的注释。
代码本身和必要的嵌入注释将描述实现方法。
当参数的功能不明显且当过程希望参数在一个特定的范围内时,也应描述传递给过程的参数。
被过程改变的函数返回值和全局变量,特别是通过引用参数的那些,也必须在每个过程的起始处描述它们。
过程头注释块应该包括下列节标题。
节标题
注释描述
目的
该过程完成什么(而不是怎么完成)。
用法
该过程将如何调用。
前置条件(preCondition)是什么
效果
列出每个被影响的外部变量、控件、或文件及其作用(只有当它不明显时)。
输入
每一个可能不明显的参数。
参数分别在单独的行上,并嵌入注释。
返回
函数返回值的说明。
2变量声明
所有的变量必须先声明,后使用。
声明变量时,应显式指出变量类型。
一行声明一个变量。
初始化所有变量。
在“选项”对话框的“编辑器”标签中,复选“要求变量声明”选项。
OptionExplicit语句要求在VisualBasic程序中声明所有的变量。
对于一个变量只能有一些离散的取值时,应考虑使用枚举。
声明定长数组时,须指明下界。
尽量不要硬指定数组的界。
全局变量应用长名字,以便在各个模块使用中易于理解。
建议:
在每个模块中都建立一个变量初始化函数,负责本模块变量的初始化,而在系统启动中,分别调用各个初始化函数,从而使你的全程变量管理更简单。
3参数声明
自己定义的函数中,参数应使用ByVal或ByRef,显式指明参数的类型,验证参数。
4窗体控件初始化
Ø建立好窗体后应首先设置窗体的字体为宋体9号,这样拖放到窗体的控件字体会自动设置为宋体9号,统一字体风格(因为窗体要求风格一致,建议在工程中保留一个模板窗体,定义好一些统一使用的模块,在新建窗体时把模板窗体添加后修改即可)
Ø窗体上的控件应统一在InitFormData过程初始化(清除值,添加值等操作)。
Ø窗体设计时对Label控件(用于显示信息,如客户代码)应保留其默认的Caption值,在窗体启动时调用InitInfo初始化
Ø初始化输入控件过程统一命名为InitInputInfo,用于确认成功后清空输入项
5前后台交互功能
Ø对前后台交互的每个功能,定义于数据库中,并可用工具自动实现VB及JAVA交互的代码。
Ø对于各个模块都会用到的功能(取信息类,如取客户信息、xx信息等),要在公用模块定义。
定义格式如下:
PublicFunctionCReturnInfoGetCustInfo(paraAsCPara)
四GUI界面规范
(1)字体的大小是否一致,使用的是否都是宋体9号。
(2)注意字母全角,半角(大小写)
(3)子窗口都不出现在任务栏中
(4)窗口(除主窗口外)是否都不能最大化,最小化。
(5)所有子窗口应该不可以用鼠标拖动变大变小。
(6)检查窗口的启动位置,启动位置应在屏幕中间。
(7)打开有SSTAB的窗口后,是否是第一个TAB框在前。
(8)按扭的摆放位置是否正确:
按照“增加(A)”“删除(D)”“放弃(C)”“打印(P)”“确定(S)”“取消(Q)”放置。
按扭的快捷键是否正确。
按扭是否和窗口最右边的控件对齐。
按扭之间的间隔是否均匀。
(9)各个控件之间的间隔是否均匀。
Text框之间,ComBox框之间,Text框和ComBox框之间的间隔为100.
(10)Text框高度为270,距Frame框的上边界为250,在一个SSTAB中的Frame,Frame距上距离是420,距左边的距离是100.
(11)分割线控件可以用Frame控件,其中Caption为空,高度120
(12)SSTAB加速键(1,2,3,。
。
。
);状态栏:
放置在窗口的最下边,高度345,style=sbrSimple
(13)按数据字典中的术语进行规范,在各个界面出现的相同含义的元素必须有相同的表述,包括具有相同功能的按扭,快捷键。
(14)Button都统一放置在窗口或控件的右下角。
(15)前台VB的提示信息和后台给出的提示信息区分,后台提示信息带有编号(通过统一的前后台交互函数来处理)
(16)输入项为百分比,统一为后面有%号(label)的输入,前后台交互时一律用小数(即界面输入数/100)
(17)多行表单显示数据统一为listView(View=lvwReport),若允许多选,则设Checkboxes=True,为能根据实际需要调整每一列的显示宽度及顺序,建议用setColumnData、setColumnTitle两个函数对listView进行操作
(18)对话框要求
.18.1提示对话框:
MSGBOX“提示信息……”,vbOKOnly+vbInfomation,”操作提示”
.18.2确认对话框:
MsgBox("确定……吗?
",vbDefaultButton2+vbOKCancel+vbQuestion,"操作提示"
(19)一致性要求:
.19.1窗口的风格是否一致。
.19.2对话框风格是否一致。
.19.3屏幕布局是否一致
.19.4输出色彩一致
.19.5技术术语一致
.19.6菜单语法结构一致
.19.7提示信息格式一致
.19.8热键定义一致
五GUI操作控制规范
1GUI通用操作要求
(1)Tab键和Return键(包括数据小键盘上的ENTER)作必要的检查和请求相应的信息。
具体检查要求会在界面操作流程说明。
.1.1输入项合法性在确定时逐一检查
.1.2若输入项要到后台取数据,则用户输入后即发到后台请求验证数据;若用户输入为空,则允许焦点到下一输入项
.1.3与后台交互,若检查通过,则焦点到下一个控件;若检查不通过,则焦点停在原地(若是TextBox则全选文本)
(2)确定Bottun,检查输入项是否输入正确(必输项不能为空、不超过DB相应字段的长度限制等)若是检查不通过,提示用户后把焦点置到相应控件上。
.2.1若是与后台交互式失败或逻辑错误则焦点保留在原处
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 编写 规范 VB