Access命名规则专业资料_第1页
Access命名规则专业资料_第2页
Access命名规则专业资料_第3页
Access命名规则专业资料_第4页
Access命名规则专业资料_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Access命名规则:

网址:.net

好的命名规则让你受益终生

为什么在程序编写中需要遵循一个好的命名规则呢。

一方面,统一的命名标准可以让你的代码始终保持一致的风格,便于你自己看懂,也便于与别的

开发人员交流和沟通,事实上,这些标准也是一种语言,这是你们沟通最佳的媒介,有了它,你

甚至不需更多的解释,对方就能看懂你的程序。

编程老手也许会长期用隐含错误的方式编程(习惯成自然),发现毛病后都不愿相信那是真

的!

编程高手可以在某一领域写出极有水平的代码,但未必能从全局把握软件质量的方方面面。

在团队开发中,一个好的命名规则可以最大限度的实现程序共享,加快开发进度。让协作

者、后继者和自己在现在或将来很久以后,在最短的时间内看清你的程序结构,理解你的设

计思绪。从而大大提高代码的可读性、可重用性、可移植性。

迪过命名注入更多的信息在源代码中,nJ以使你的程序易读和易J•维护,减少一些隐性错误,

同时大大缩短你写程序注释和程序文档的时间,由于你的命名事实上已经是一种程序注释。

提高与ACCESS对象协作的能力,涉及对象的排序,自己这数库的编写,以及查找与替

换的能力,例如你更容易把报表和窗体对象、表和查询对象分开并按照一定的规则排序。

有助于程序编写工具的开发,可以编写自己的加载项并遵守好的命名规则来加快程序代码

的编写、排版以及自动纠错。如全局查找与替换工具、代码分析与优化工具、报表自动生成

工具等等。

更易于发现代码的错误并更易于修正错误,当系统的规定实现的功越来越复杂或当代码量到

达•定的规模,不管程序员是否乐意,出现错误几乎都是不可避免的,但假如大家都遵循•

定的编程标准,则可以最大限度地减少错误出现的机率,并且在出现错误的情况下也能迅速

地发现和排除。

7.

8.长期遵循一个好的命名规则能让你长期稳定地编写高质量、高效率和更大型的程序。

3LNCforMicrosoftAccess命名规则简介:

LNC即LeszynskiNamingConvention,本来在《TheLeszinski/ReddickGuidelinesfor

Access1.x,2.x》这本白皮书中由StanLeszynski和GregReddick推荐使用的命名规则,

LNC开始于Access1.0这个版本,后来随着ACCESS版本的升级,这个命名规则就被迅速传

播开来,在当今ACCESS和VB开发者和开发团队中,它已经成为事实中的命名标准,在国

外已经广泛被使用,并被微软推荐使用,它规范了从ACCESS数据库设计、窗体与报表的设计

以及程序的编写一整套完整且易用的命名标准,我看过国内许多VB和ACCESS源程序,但很

少人,特别在ACCESS程序员中,注意到命名规则并遵循某种命名约定,这给程序交流导致

了很大的困难,同时,由于程序员自己没有一套标准的命名规则,在编写过程中随意命名,

随着时间的推移,自已都难以阅读和修改以前的程序源码。

WLNCforMicrosoftAccess详解:

LNC命名规则分为两个级别,级别1是比较容易理解的,但级别2对对象进行了更严格的

划分,级别1更多地适合初级程序员,而级别2则更适合于一些有经验的开发者,或在一些非常

复杂或多层结构的系统开发中使用,你应当根据你自己的经验和工惯来选择更适合你的命名规

则级别。请注意,不是命名规则的所有部分都分为两个级别,而只是在某些部分有所不同

LNC命名规则是基于匈牙利命名法,为什么叫匈牙利命名法呢,重要是取自于作者的国籍,它

的作者CharlesSimonyi,也曾经使用过ACCESS的初期版本。匈牙利命名法是在他的博士论

文中提到的。匈牙利命名法的一些基本原理在VisualBasic的说明手册和一些开发文档中都会被

提及到,微软内部也是使用匈牙利命名法,在世界上,已有非常多的程序员在使用这个命名法,

LNC命名规则事实上是将匈牙利命名法应用到ACCESS上,并特别针对ACCESS一些特性进

行了一些完善。

LNC命名规则提倡所有的对象的名称均由下面四个部分组成:

一个或多个前缀、一个标记符、基本名字、限定词

[prefixes]tag[Basename][Qualifier]注:口里的内容表达为可选内容。

标记符是必须的内容,但一般情况下,你都需要一个基本名字来准确描述你的变量的实际功能,

以用来区分同类型的不批准义的变量。假如你仅仅使用一个标记符来标记一个变量,那么就比较

难以分辨不同的变量,但有一种情况除外,那就是你传一个对象参数给另一个函数时,可以不需

要指定基本名字,例如你需要传递一个窗体对象给一个初始化窗体颜色的函数,那么这个作为

参数传递的窗体对象事实卜是作为一种通用的窗体对象,所以你不必为它指定一个具体的名字,

而宜接使用标记符即可。

下面举出几个简朴的例子:

名称前缀标记符基本名字限定符备注

tbICustomertblCustomer客户表

aintPartNumaintPartNum零件号数组

strCustNamePrevstrCustNamePrev本来的客户名

前缀和标记符总是小写的,这样当我们的眼光扫过对象名称时,目光就会停留在以大写字母开

头的基本名字上面,这样提高了名称的可读性,基本名字和限定符都是以大写字母开头的。

基本名字简洁地描述了这个对象的意义,而非描述它的类别,例如在查询qryPartNum这个名称

中,PartNum就是基本名字,它是“PartNumber”的缩写,对象的标记符应当是简朴且易记忆

的,而前缀是放在对象名和标记符之前,用来提供更多或额外的信息,例如数字对象intPartNum

前加个a,代表这个零件号数组,即aintPartNum,更进一步,假如我们需要一个变量来指定

aintPartNum这个数组的索引,那需要在这个数组的前面再加个前缀I,那这个变量的名称应

当是iaintPartNum。当然,你会发现,假如严格按照上述的规范来命名你所有的对象,需要你付

出更多的努力并增长你现有的工作量,但假如一年后让你重新来修改下面这两种风格的代码,

你会觉得哪种更易于修改和更易于重用呢。

第一种风格:

Z=Y(X)

第二种风格:

intPart=aintPartNum(iaintPartNum)

对象限定符是在基本名字后面再加一个符号以更具体阐明这个对象,我们还是以前面的

iaintPartNum为例,假如你想为这个数组保存两个索引号,一个是第一个索引号,一个是最后一

个索引号,在iaintPartNum加上限定符就变成/iaintPartNumFirst和iaintPartNumLast

□命名数据库对象:

数据库对象(表、查询、窗体、报衣、宏、模块)是在ACCESS应用程序中经常被引用的对象,

它们会出现在宏、VBA代码和属性中,所以如何对它们对的命名是非常重要的。

微软所带的Northwind数据库例程以及微ACCESS手册中允许对象名中存在空格,但我们不建

议这种命名风格,在许多数据库引擎和编程语言中,涉及ACCESSBASIC,空格是一种分隔符,

它不是对象名称的一个逻辑部分,并且,在许多数据库平台中涉及微软的SQLSERVER数据库

和WORD文字解决程序,带有空格的名称是不能工作的。相反,使用•种大小写混合的方式来

指定名称,例如:tbIAccountsPayable,假如一定要使用空格,那就用下划线来取代它。

对LNC命名规则中,所有数据容/对•象都有•个标记符,在对象名称前面加上标记符对非编程

人员来说可以不会增长太多可读性,但对于编程新手来说,当他们需要在报表精灵的数据源列

表框或一个窗体的控件源选择一个表或查询时,添加标记符会带来很大帮助,山于ACCESS会

把表和查询不加分别地放在一个长列表里。

下面是级别1标记符例子

的数据库容

器对象的标

记符:

对象

TabletblTbICustomer

QueryqryqryOverAchiever

FormfrmFrmCustomer

ReportrptrptlnsuranceValue

MacromcrmcrUpdatelnventory

ModulebasBasBilling

在级别1.数据库容器对象唯一需要的一个限定符就.Sub.它是放在那些子简体或子报表的窗体名

的后面.例如窗.frmProductSupplie.拥有一一个相关的子,窗体frmProductSupplierSub.这样,一旦

排序时,对象和它的子对象就会顺序排在一起。

下面是级别2的数据库标记符例子

容器对象的标记符:

对象

TabletbltbICustomer

Table(lookup)tlkptlkpShipper

Query(select)qry(orqsel)qryOverAchiever

Query(append)qappqappNewProduct

Query(crosstab)qxtbqxtbRegionSales

Query(datadefinition)qddlqddlAddWorkColumn

Query(delete)qdelqdelOldAccount

Query(formfilter)qfltqfltSalesToday

Query(lookup)qlkpqlkpStatus

Query(maketable)qmakqmakShipTo

Query(pass-through)qsptqsptArchiveQuantity

Query(union)quniquniOrderDetail

Query(update)qupdqupdDiscount

FormfrmfrmCustomer

Form(dialog)fdlgfdlgLogin

Form(menu)fmnufmnuUtility

Form(message)fmsgfmsgWait

Form(subform)fsubfsubOrder

ReportrptrptlnsuranceValue

Report(subreport)rsubrsubOrder

Macromcrmcrllpdatelnventory

Macro(forform)m[fornname]mfrmCustomer

Macro(menu)mmnummnuEntryFormFile

Macro(forreport)m[rptname]mrptlnsuranceValue

ModulebasbasBilling

假如使用级别2的命名规则,则在数据库容器里排序时,有着类似功能的对象会排在•起,当你

的应用越来越人M,在你的数据库系统中也许会包含100个窗体或者更多,而其中30个窗体是

用来显示消息用的,假如有一天,你需要将这个消息窗体里面的文木框的文字由黑色所有改成

红色,你必须逐个打开每个窗体拟定它是否消息窗体然后再修改文本框的颜色,但假如你把它

们的名称设为包含同样的标记符fmsg,那么排序时它们会排在一起,那你修改的时候就不必一

个--个去筛选了,大大节约了你修改时间。

请小心仔细地选择表的名称,由于改变ACCESS对象的名称并不会自动应用到整个数据库,所

以当在ACCESS对象创建时给它对的命名是非常重要的。例如,在以后的开发过程中假如需要

改变表的名称,你可需要改变所有引用到到这个表名的表、查询、窗体、报表、宏和模块中引用

到到这个表名,虽然,有一些辅助工具可以帮你减轻一些工作量,但最佳还是在一开始就给它对

的地命名。

你也许希望引用了一个表的每个数据对象都有一个与表名同样的基本名字,而使用相应的标记

符来区分它们,例如,你的表名是tbICustomer,它的主窗体名应当是frmCustomer,它的主报

表名应当是rptCustomer,而引发相关这些事件的宏名应当是mfrmCustomer和mrptCustomer,

我们也建议表的名称不宜用复数形式,例如使用tbICustomers,山于一个表通常都是包含多条

记录的,这暗示它自身就是复数的。

数据库对象前缀

7

.我们使用四种数据库对象前缀:

“ZZ”表达那些你已经废弃的但是也许想要在数据库中将来作为参考或保存使用的对•(举例来

说,zzfrmPhoneList)."zz"将导致对"象名称排在数据库容器的底部这样,它就会放在•个不显眼

9的地方,但它仍然是有效的。

92”表达一些临时的对.(举例夹说,ztqryTest).

"zs”表达系统对.(举例来说,zstbQbjects).系统对象是那些不被尻终用户使用的那些有关系统

开发和维护方面的对象,例如错误日记,开发注解,文档,关联信息等等.(注."zs.是前缀.这样

系统对象就会尽量排在数据库容器的底部).

..1

来表达那些正在开发中的对.(举例来说「mcrNewEmployee).一个对象名字前面加上下划线可

使它排在数据库容器的顶端,提醒你它需要注意.当这个对象已经所有完毕.,除去下划线,它将会

正常地排序.

字段标志符

在字段上使用标志符一直是一个争议的话题,甚至在这个文章的作家之间也存在不同的见

解.Greg主张字段标志符也应当统使用与其它ACCESS数据对象及VBA中使用的同样的命名

规.,而Stan则更喜欢使用一种与平台和数据类型无关的命名方式,即字段名称不需要加字与字

段类型相关的标志符,这样有助于数据库移植和互相连通。

考虑到标志符例子

两者的

立场,连

同你自

己的需

求,你们

可以选

择在命

名时是

否加入

下表这

些标志

符:

数据类

BinaryBinbininternal

ByteBytbytFloorNum

CounterLngIngPKCnt

CurrencCurcurSalary

y

Date/TiDtmdtmHireDate

me

DoubledbldbIMass

Integerint(CprogrammersmaypreferMw")intUnit

LongIng(Cprogrammersmayprefer"dw")IngPopulatio

n

MemomemmemComme

nts

OleoleoleEmpPhot

0

Singlesng(Someusersfind"sgl"moremnemonic)sngScore

Textst.(Use.a.oppose.t."1xt.becaus..textbo.contro.use."txt".programmer.strFirstName

ma.prefe."sz,^)

Yes/Noysn(Cprogrammersmayprefer"f")ysnDiscount

ed

7

,注意:

ACCESS引擎("jet")支持二进制的数据类型,但它并没有对用户开放这种功能,但是你可以

通过汇入或链接到外部表来实现这种数据类型,并且,一些系统表也使用这种数据类型命名。

..2

在ACCESS内部,自动编号数据类型是当作是一种长整型来对待,只是增长了一个

auto-increment的特殊属性,而自动编号字段经常会作为外键被其它表引用,所以Greg使用

了与长整型同样的标记符,但假如你想区分长整型与自动编号类型,则可以在对象名称最后

加上Cnt限定符

..3

..4标签控件对象

当你创建一个新的绑定控件时,窗体或报表会自动分派字段的名称给这个控件名称,控件与字

段使用相同的名称会导致命名的混乱,特别你在VBA代码中同时引用到字段和控件,有时会导

致一些错误,为避免这种情况,需耍在控件名称前面加上标记符,例如一个文本框控件,它的控

件来源是Customer,那么我们绐它取的名称就是txtCustomer.

在级别1中,使用者只是想区分活动控件和标签,对不太关心控件的类型,这样,控件的标记符

就如下所示:

ObjectTagExample

LabelIblIbILastName

OthertypesctlctILastName

级别1描述了了控件之间•个很小的差异性的,但是,它在函数、室或程序文档还是非常有用的,

例如,通过它可以区别哪些控件是属于标签,那些是其它控件,其中前者是不可修改的,而后者

则可从用户输入或代码中接受值

级别2指明了窗体或报表中控件的类型,这样VBA代码或宏更容易区分这些控件的属性和事件

对象标记符例子

Chart(graph)chtchtSales

CheckboxchkchkReadOnly

Comboboxcbocbolndustry

CommandbuttoncmdcmdCancel

Frame(object)frafraPhoto

LabelIblIbIHelpMessage

LinelinlinVertical

Listbox1stIstPolicyCode

OptionbuttonoptoptFrench

OptiongroupgrpgrpLanguage

PagebreakbrkbrkPagel

Rectangle(VisualBasicusesthetermshpshpNamePanel

"shape")

Subform/reportsubsubContact

TextboxtxttxtLoginName

TogglebuttontgitglForm

对控件来说,唯五的前缀就是“ZS”,它只出现在级别2中,它表白这是一个系统控件,只

被窗体或代码使用,而不对用户开放,例如有些控件在运营时是不可见的,但它也许用来存储一

些临时值或传递参数给窗体

唯一的前缀为控制出现在水2它指示系统.水平被形式用或编码的控制但是不对使用者显

示.如此的控制通常不对〜感到看得见的跑计时但是他们也许储存暂时的价值,否则叁数传给形

式.

匚命名代码或宏中的对象:

使用标准的描述性强的变量、常量、和函数名可大大增强代码的共享、维护、和联接的能

1.变量的标记符

每个变量都应有一个如下表所示的标记符

变量类型标记符例子

ContainerconDimconTablesasContainer

ControlctlDimctIVaporAsControl

CurrencycurDimcurSalaryAsCurrercy

DatabasedbDimdbCurrentAsDatabase

DocumentdocDimdocRelationshipsasDocument

DoubledblDimdbIPiAsDouble

DynasetdynDimdynTransactAsDyraset

Flag(Y/N,T/F)fDimfAbortAsInteger

FieldfidDimfldLastNameasField

FormfrmDimfrmGetUserAsForm

GroupgruDimgruManagersasGroup

IndexidxDimidxOrderldasIndex

IntegerintDimintRetValueAsInteger

LongIngDimIngParamAsLong

ObjectobjDimobjGraphAsObject

ParameterprmDimprmBeginDateasParameter

PropertyprpDimprpUserDefinedasProperty

QueryDefqdf(orqrd)DimqdfPriceAsQueryDef

Recordsetrec(orrst)DimrecPeopleasRecordset

RelationrelDimrelOrderltemsasRelation

ReportrptDimrptYTDSalesAsReport

SinglesngDimsngLoadFactorAsSingle

SnapshotsnpDimsnpPartsAsSnapshot

StringstrDimstrUserNameAsString

TabletblDimtbIVendorAsTable

TableDeftdf(ortbd)DimtdfBookingasTableDef

Type(user-defined)typDimtypPartRecordAsmtPARTRECORD

Userusr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论