软件编写规范VB.docx

上传人:b****4 文档编号:6693185 上传时间:2023-05-10 格式:DOCX 页数:16 大小:28.33KB
下载 相关 举报
软件编写规范VB.docx_第1页
第1页 / 共16页
软件编写规范VB.docx_第2页
第2页 / 共16页
软件编写规范VB.docx_第3页
第3页 / 共16页
软件编写规范VB.docx_第4页
第4页 / 共16页
软件编写规范VB.docx_第5页
第5页 / 共16页
软件编写规范VB.docx_第6页
第6页 / 共16页
软件编写规范VB.docx_第7页
第7页 / 共16页
软件编写规范VB.docx_第8页
第8页 / 共16页
软件编写规范VB.docx_第9页
第9页 / 共16页
软件编写规范VB.docx_第10页
第10页 / 共16页
软件编写规范VB.docx_第11页
第11页 / 共16页
软件编写规范VB.docx_第12页
第12页 / 共16页
软件编写规范VB.docx_第13页
第13页 / 共16页
软件编写规范VB.docx_第14页
第14页 / 共16页
软件编写规范VB.docx_第15页
第15页 / 共16页
软件编写规范VB.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

软件编写规范VB.docx

《软件编写规范VB.docx》由会员分享,可在线阅读,更多相关《软件编写规范VB.docx(16页珍藏版)》请在冰点文库上搜索。

软件编写规范VB.docx

软件编写规范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若是与后台交互式失败或逻辑错误则焦点保留在原处

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2