Access 命名規(guī)則
《Access 命名規(guī)則》由會員分享,可在線閱讀,更多相關(guān)《Access 命名規(guī)則(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Access 命名規(guī)則: 網(wǎng)址:www.office- 好的命名規(guī)則讓你受益終生 為什么在程序編寫中需要遵循一個好的命名規(guī)則呢。 首先,統(tǒng)一的命名標(biāo)準(zhǔn)能夠讓你的代碼始終保持一致的風(fēng)格,便于你自己看懂,也便于與別的開發(fā)人員交流和溝通,實際上,這些標(biāo)準(zhǔn)也是一種語言,這是你們溝通最好的媒介,有了它,你甚至不需更多的解釋,對方就能看懂你的程序。 1. 編程老手可能會長期用隱含錯誤的方式編程(習(xí)慣成自然),發(fā)現(xiàn)毛病后都不愿相信那是真的! 2. 編程高手可以在某一領(lǐng)域?qū)懗鰳O有水平的代碼,但未必能從全局把握軟件質(zhì)量的方方面面。 3. 在團(tuán)體開發(fā)中, 一個好的命
2、名規(guī)則能夠最大限度的實現(xiàn)程序共享, 加快開發(fā)進(jìn)度。讓協(xié)作者、后繼者和自己在現(xiàn)在或?qū)砗芫靡院?,在最短的時間內(nèi)看清你的程序結(jié)構(gòu),理解你的設(shè)計思路。從而大大提高代碼的可讀性、可重用性、可移植性。 4. 通過命名注入更多的信息在源代碼中,可以使你的程序易讀和易于維護(hù),減少一些隱性錯誤,同時大大縮短你寫程序注釋和程序文檔的時間,因為你的命名實際上已經(jīng)是一種程序注釋。 5. 提高與ACCESS對象協(xié)作的能力, 包括對象的排序, 自已函數(shù)庫的編寫, 以及查找與替換的能力,例如你更容易把報表和窗體對象、表和查詢對象分開并按照一定的規(guī)則排序。 6. 有利于程序編寫工具的開發(fā), 可以編寫自己的加
3、載項并遵守好的命名規(guī)則來加快程序代碼的編寫、排版以及自動糾錯。如全局查找與替換工具、代碼分析與優(yōu)化工具、報表自動生成工具等等。 7. 更易于發(fā)現(xiàn)代碼的錯誤并更易于修正錯誤,當(dāng)系統(tǒng)的要求實現(xiàn)的功越來越復(fù)雜或當(dāng)代碼量到達(dá)一定的規(guī)模, 不管程序員是否愿意, 出現(xiàn)錯誤幾乎都是不可避免的,但如果大家都遵循一定的編程標(biāo)準(zhǔn),則可以最大限度地降低錯誤出現(xiàn)的機(jī)率, 而且在出現(xiàn)錯誤的情況下也能迅速地發(fā)現(xiàn)和排除。 8. 長期遵循一個好的命名規(guī)則能讓你長期穩(wěn)定地編寫高質(zhì)量、高效率和更大型的程序。 LNC for Microsoft Access 命名規(guī)則簡介: LNC即
4、Leszynski Naming Convention, 原來在《The Leszinski/Reddick Guidelines for Access 1.x, 2.x》這本白皮書中由Stan Leszynski 和 Greg Reddick 推薦使用的命名規(guī)則, LNC 開始于 Access 1.0這個版本, 后來隨著ACCESS版本的升級,這個命名規(guī)則就被迅速傳播開來, 在當(dāng)今ACCESS和VB開發(fā)者和開發(fā)團(tuán)體中, 它已經(jīng)成為事實中的命名標(biāo)準(zhǔn), 在國外已經(jīng)廣泛被使用,并被微軟推薦使用, 它規(guī)范了從ACCESS數(shù)據(jù)庫設(shè)計、窗體與報表的設(shè)計以及程序的編寫一整套完整且易用的命名標(biāo)準(zhǔn), 我看過國
5、內(nèi)許多VB和ACCESS源程序, 但很少人, 特別在ACCESS程序員中, 注意到命名規(guī)則并遵循某種命名約定, 這給程序交流造成了很大的困難, 同時, 由于程序員自己沒有一套標(biāo)準(zhǔn)的命名規(guī)則, 在編寫過程中隨意命名, 隨著時間的推移, 自已都難以閱讀和修改以前的程序源碼。 LNC for Microsoft Access 詳解: LNC命名規(guī)則分為兩個級別,級別1是比較容易理解的,但級別2對對象進(jìn)行了更嚴(yán)格的劃分,級別1更多地適合初級程序員,而級別2則更適合于一些有經(jīng)驗的開發(fā)者,或在一些非常復(fù)雜或多層結(jié)構(gòu)的系統(tǒng)開發(fā)中使用,你應(yīng)該根據(jù)你自己的經(jīng)驗和習(xí)慣來選擇更適合你
6、的命名規(guī)則級別。請注意,不是命名規(guī)則的所有部分都分為兩個級別,而只是在某些部分有所不同 LNC命名規(guī)則是基于匈牙利命名法,為什么叫匈牙利命名法呢,主要是取自于作者的國籍,它的作者 Charles Simonyi ,也曾經(jīng)使用過ACCESS的早期版本。匈牙利命名法是在他的博士論文中提到的。匈牙利命名法的一些基本原理在Visual Basic的說明手冊和一些開發(fā)文檔中都會被提及到,微軟內(nèi)部也是使用匈牙利命名法,在世界上,已經(jīng)有非常多的程序員在使用這個命名法,LNC命名規(guī)則實際上是將匈牙利命名法應(yīng)用到ACCESS上, 并特別針對ACCESS一些特征進(jìn)行了一些完善。 LNC命名規(guī)則提倡所有
7、的對象的名稱均由下面四個部分組成: 一個或多個前綴、一個標(biāo)記符、基本名字、限定詞 [prefixes]tag[Basename][Qualifier] 注:[]里的內(nèi)容表示為可選內(nèi)容。 標(biāo)記符是必須的內(nèi)容,但一般情況下,你都需要一個基本名字來準(zhǔn)確描述你的變量的實際功能,以用來區(qū)分同類型的不同意義的變量。如果你僅僅使用一個標(biāo)記符來標(biāo)記一個變量,那么就比較難以分辨不同的變量,但有一種情況除外,那就是你傳一個對象參數(shù)給另一個函數(shù)時,可以不需要指定基本名字,例如你需要傳遞一個窗體對象給一個初始化窗體顏色的函數(shù),那么這個作為參數(shù)傳遞的窗體對象實際上是作為一種通用的窗體對象,所以你不必為
8、它指定一個具體的名字,而直接使用標(biāo)記符即可。 下面舉出幾個簡單的例子: 名稱 前綴 標(biāo)記符 基本名字 限定符 備注 tblCustomer tbl Customer 客戶表 aintPartNum a int PartNum 零件號數(shù)組 strCustNamePrev str CustName Prev 原來的客戶名 前綴和標(biāo)記符總是小寫的,這樣當(dāng)我們的眼光掃過對象名稱時,目光就會停留在以大寫字母開頭的基本名字上面,這樣提高了名稱的可讀性,基本名字和限定符都是以大寫字母開頭的。 基本名字簡潔地描述了這個對象的意義
9、,而非描述它的類別,例如在查詢qryPartNum這個名稱中,PartNum就是基本名字,它是 “Part Number”的縮寫,對象的標(biāo)記符應(yīng)該是簡單且易記憶的,而前綴是放在對象名和標(biāo)記符之前,用來提供更多或額外的信息,例如數(shù)字對象intPartNum前加個a, 代表這個零件號數(shù)組,即aintPartNum,更進(jìn)一步,如果我們需要一個變量來指定aintPartNum這個數(shù)組的索引,那需要在這個數(shù)組的前面再加一個前綴I,那這個變量的名稱應(yīng)該是iaintPartNum。當(dāng)然,你會發(fā)現(xiàn),如果嚴(yán)格按照上述的規(guī)范來命名你所有的對象,需要你付出更多的努力并增加你現(xiàn)有的工作量,但如果一年后讓你重新來修改下
10、面這兩種風(fēng)格的代碼,你會覺得哪種更易于修改和更易于重用呢。 第一種風(fēng)格: Z = Y(X) 第二種風(fēng)格: intPart = aintPartNum(iaintPartNum) 對象限定符是在基本名字后面再加一個符號以更具體闡明這個對象,我們還是以前面的iaintPartNum為例,如果你想為這個數(shù)組保存兩個索引號,一個是第一個索引號,一個是最后一個索引號,在iaintPartNum加上限定符就變成了iaintPartNumFirst和iaintPartNumLast 命名數(shù)據(jù)庫對象: 數(shù)據(jù)庫對象(表、查詢、窗體、報表、宏、模塊)是在A
11、CCESS應(yīng)用程序中經(jīng)常被引用的對象,它們會出現(xiàn)在宏、VBA代碼和屬性中,所以如何對它們正確命名是非常重要的。 微軟所帶的Northwind數(shù)據(jù)庫例程以及微ACCESS手冊中允許對象名中存在空格,但我們不建議這種命名風(fēng)格,在許多數(shù)據(jù)庫引擎和編程語言中,包括ACCESS BASIC,空格是一種分隔符,它不是對象名稱的一個邏輯部分,而且,在許多數(shù)據(jù)庫平臺中包括微軟的SQL SERVER數(shù)據(jù)庫和WORD文字處理程序,帶有空格的名稱是不能工作的。相反,使用一種大小寫混合的方式來指定名稱,例如:tblAccountsPayable,如果一定要使用空格,那就用下劃線“_”來取代它。 對LNC命名規(guī)
12、則中,所有數(shù)據(jù)容器對象都有一個標(biāo)記符,在對象名稱前面加上標(biāo)記符對非編程人員來說可以不會增加太多可讀性,但對于編程新手來說,當(dāng)他們需要在報表精靈的數(shù)據(jù)源列表框或一個窗體的控件源選擇一個表或查詢時,添加標(biāo)記符會帶來很大幫助,因為ACCESS會把表和查詢不加分別地放在一個長列表里。 下面是級別1的數(shù)據(jù)庫容器對象的標(biāo)記符: 對象 標(biāo)記符 例子 Table tbl TblCustomer Query qry qryOverAchiever Form frm FrmCustomer Report rpt rptInsuranceValue Macro mcr mcrU
13、pdateInventory Module bas BasBilling 在級別1, 數(shù)據(jù)庫容器對象唯一需要的一個限定符就是 Sub, 它是放在那些子窗體或子報表的窗體名的后面. 例如窗體 frmProductSupplier 擁有一個相關(guān)的子窗體frmProductSupplierSub. 這樣,一旦排序時,對象和它的子對象就會順序排在一起。 下面是級別2的數(shù)據(jù)庫容器對象的標(biāo)記符: 對象 標(biāo)記符 例子 Table tbl tblCustomer Table (lookup) tlkp tlkpShipper Query (select) qry (or
14、 qsel) qryOverAchiever Query (append) qapp qappNewProduct Query (crosstab) qxtb qxtbRegionSales Query (data definition) qddl qddlAddWorkColumn Query (delete) qdel qdelOldAccount Query (form filter) qflt qfltSalesToday Query (lookup) qlkp qlkpStatus Query (make table) qmak qmakS
15、hipTo Query (pass-through) qspt qsptArchiveQuantity Query (union) quni quniOrderDetail Query (update) qupd qupdDiscount Form frm frmCustomer Form (dialog) fdlg fdlgLogin Form (menu) fmnu fmnuUtility Form (message) fmsg fmsgWait Form (subform) fsub fsubOrder Report rpt rptI
16、nsuranceValue Report (subreport) rsub rsubOrder Macro mcr mcrUpdateInventory Macro (for form) m[formname] mfrmCustomer Macro (menu) mmnu mmnuEntryFormFile Macro (for report) m[rptname] mrptInsuranceValue Module bas basBilling 如果使用級別2 的命名規(guī)則,則在數(shù)據(jù)庫容器里排序時,有著類似功能的對象會排在一起,當(dāng)你的應(yīng)用越來越大時,在
17、你的數(shù)據(jù)庫系統(tǒng)中可能會包含100個窗體或者更多,而其中30個窗體是用來顯示消息用的,如果有一天,你需要將這個消息窗體里面的文本框的文字由黑色全部改成紅色,你必須逐一打開每個窗體確定它是否消息窗體然后再修改文本框的顏色,但如果你把它們的名稱設(shè)為包含同樣的標(biāo)記符fmsg, 那么排序時它們會排在一起,那你修改的時候就不必一個一個去篩選了,大大節(jié)約了你修改時間。 請小心仔細(xì)地選擇表的名稱,因為改變ACCESS對象的名稱并不會自動應(yīng)用到整個數(shù)據(jù)庫,所以當(dāng)在ACCESS對象創(chuàng)建時給它正確命名是非常重要的。例如,在以后的開發(fā)過程中如果需要改變表的名稱,你可需要改變所有引用到到這個表名的表、查詢、窗體、報表
18、、宏和模塊中引用到到這個表名,雖然,有一些輔助工具可以幫你減輕一些工作量,但最好還是在一開始就給它正確地命名。 你可能希望引用了一個表的每個數(shù)據(jù)對象都有一個與表名一樣的基本名字,而使用相應(yīng)的標(biāo)記符來區(qū)分它們,例如,你的表名是tblCustomer,它的主窗體名應(yīng)該是frmCustomer,它的主報表名應(yīng)該是rptCustomer,而引發(fā)相關(guān)這些事件的宏名應(yīng)該是mfrmCustomer和mrptCustomer,我們也建議表的名稱不宜用復(fù)數(shù)形式,例如使用tblCustomers,因為一個表通常都是包含多條記錄的,這暗示它本身就是復(fù)數(shù)的。 數(shù)據(jù)庫對象前綴 ? 我們使用四
19、種數(shù)據(jù)庫對象前綴: ? "zz"表示那些你已經(jīng)廢棄的但是可能想要在數(shù)據(jù)庫中將來作為參考或保存使用的對象 (舉例來說,zzfrmPhoneList). "zz"將導(dǎo)致對象名稱排在數(shù)據(jù)庫容器的底部,這樣,它就會放在一個不顯眼的地方,但它仍然是有效的。 ? "zt"表示一些臨時的對象 (舉例來說,ztqryTest). ..1 "zs"表示系統(tǒng)對象 (舉例來說,zstblObjects). 系統(tǒng)對象是那些不被最終用戶使用的那些有關(guān)系統(tǒng)開發(fā)和維護(hù)方面的對象,例如錯誤日志,開發(fā)注解,文檔,關(guān)聯(lián)信息等等. (注意 "zs" 是前綴.這樣系統(tǒng)對象就會盡量排在數(shù)據(jù)庫容器的底部).
20、 "_" 來表示那些正在開發(fā)中的對象 (舉例來說,_mcrNewEmployee). 一個對象名字前面加上下劃線可使它排在數(shù)據(jù)庫容器的頂端,提醒你它需要注意. 當(dāng)這個對象已經(jīng)全部完成后 ,除去下劃線,它將會正常地排序. 字段標(biāo)志符 在字段上使用標(biāo)志符一直是一個爭議的話題,甚至在這個文章的作家之間也存在不同的見解. Greg主張字段標(biāo)志符也應(yīng)該統(tǒng)一使用與其它ACCESS數(shù)據(jù)對象及VBA中使用的一樣的命名規(guī)則 ,而Stan則更喜歡使用一種與平臺和數(shù)據(jù)類型無關(guān)的命名方式,即字段名稱不需要加字與字段類型相關(guān)的標(biāo)志符,這樣有助于數(shù)據(jù)庫移植和相互連通。 考慮到兩者的立場,連同你自己的需求
21、,你們可以選擇在命名時是否加入下表這些標(biāo)志符: 數(shù)據(jù)類型 標(biāo)志符 例子 Binary Bin binInternal Byte Byt bytFloorNum Counter Lng lngPKCnt Currency Cur curSalary Date/Time Dtm dtmHireDate Double dbl dblMass Integer int (C programmers may prefer "w") intUnit Long lng (C programmers may prefer "dw") lngPopulatio
22、n Memo mem memComments Ole ole oleEmpPhoto Single sng (Some users find "sgl" more mnemonic ) sngScore Text str (Used as opposed to "txt" because a textbox control uses "txt". C programmers may prefer "sz") strFirstName Yes/No ysn (C programmers may prefer "f") ysnDiscounted ? 注意:
23、 ..2 ACCESS引擎 ("jet") 支持二進(jìn)制的數(shù)據(jù)類型,但它并沒有對用戶開放這種功能,但是你可以通過匯入或鏈接到外部表來實現(xiàn)這種數(shù)據(jù)類型,而且,一些系統(tǒng)表也使用這種數(shù)據(jù)類型命名。 ..3 在ACCESS內(nèi)部,自動編號數(shù)據(jù)類型是當(dāng)作是一種長整型來對待,只是增加了一個auto-increment的特殊屬性,而自動編號字段經(jīng)常會作為外鍵被其它表引用,所以Greg使用了與長整型同樣的標(biāo)記符,但如果你想?yún)^(qū)分長整型與自動編號類型,則可以在對象名稱最后加上Cnt限定符 ..4 標(biāo)簽控件對象 當(dāng)你創(chuàng)建一個新的綁定控件時,窗體或報表會自動分配字段的名稱給這個控件名稱,控件與字段使
24、用相同的名稱會導(dǎo)致命名的混亂,特別你在VBA代碼中同時引用到字段和控件,有時會導(dǎo)致一些錯誤,為避免這種情況,需要在控件名稱前面加上標(biāo)記符,例如一個文本框控件,它的控件來源是Customer,那么我們給它取的名稱就是txtCustomer. 在級別1 中,使用者只是想?yún)^(qū)分活動控件和標(biāo)簽,對不太關(guān)心控件的類型,這樣,控件的標(biāo)記符就如下所示: Object Tag Example Label lbl lblLastName Other types ctl ctlLastName 級別1描述了了控件之間一個很小的差異性的,不過,它在函數(shù)、宏或程序文檔還是非常有
25、用的,例如,通過它可以區(qū)別哪些控件是屬于標(biāo)簽,那些是其它控件,其中前者是不可修改的,而后者則可從用戶輸入或代碼中接受值 級別2指明了窗體或報表中控件的類型,這樣VBA代碼或宏更容易區(qū)分這些控件的屬性和事件 對象 標(biāo)記符 例子 Chart (graph) cht chtSales Check box chk chkReadOnly Combo box cbo cboIndustry Command button cmd cmdCancel Frame (object) fra fraPhoto Label lbl lblHelpMessage L
26、ine lin linVertical List box lst lstPolicyCode Option button opt optFrench Option group grp grpLanguage Page break brk brkPage1 Rectangle (Visual Basic uses the term "shape") shp shpNamePanel Subform/report sub subContact Text box txt txtLoginName Toggle button tgl tglForm
27、 對控件來說,唯五的前綴就是 “zs”,它只出現(xiàn)在級別2中,它表明這是一個系統(tǒng)控件,只被窗體或代碼使用,而不對用戶開放,例如有些控件在運行時是不可見的,但它可能用來存儲一些臨時值或傳遞參數(shù)給窗體 唯一的前綴為控制, "zs",出現(xiàn)在水平 2. 它指示系統(tǒng)- 水平被形式用或編碼的控制但是不對使用者顯示. 如此的控制通常不對~感到看得見的跑計時但是他們可能儲存暫時的價值,否則叁數(shù)傳給形式. 命名代碼或宏中的對象: 使用標(biāo)準(zhǔn)的描述性強(qiáng)的變量、常量、和函數(shù)名可大大增強(qiáng)代碼的共享、維護(hù)、和聯(lián)接的能力 1. 變量的標(biāo)記符 每個變量都應(yīng)有一個如下表
28、所示的標(biāo)記符 變量類型 標(biāo)記符 例子 Container con Dim conTables as Container Control ctl Dim ctlVapor As Control Currency cur Dim curSalary As Currency Database db Dim dbCurrent As Database Document doc Dim docRelationships as Document Double dbl Dim dblPi As Double Dynaset dyn Dim dynTransac
29、t As Dynaset Flag (Y/N, T/F) f Dim fAbort As Integer Field fld Dim fldLastName as Field Form frm Dim frmGetUser As Form Group gru Dim gruManagers as Group Index idx Dim idxOrderId as Index Integer int Dim intRetValue As Integer Long lng Dim lngParam As Long Object obj Dim obj
30、Graph As Object Parameter prm Dim prmBeginDate as Parameter Property prp Dim prpUserDefined as Property QueryDef qdf (or qrd) Dim qdfPrice As QueryDef Recordset rec (or rst) Dim recPeople as Recordset Relation rel Dim relOrderItems as Relation Report rpt Dim rptYTDSales As Report
31、Single sng Dim sngLoadFactor As Single Snapshot snp Dim snpParts As Snapshot String str Dim strUserName As String Table tbl Dim tblVendor As Table TableDef tdf (or tbd) Dim tdfBooking as TableDef Type (user-defined) typ Dim typPartRecord As mtPART_RECORD User usr Dim usrJoe as Us
32、er Variant var Dim varInput As Variant Workspace wrk (or wsp) Dim wrkPrimary as Workspace Yes/No18 ysn Dim ysnPaid As Integer 在我們的命名方式中,不使用$ 和 %這些數(shù)據(jù)類型前綴,因為在ACCESS和Visual basic的文檔中是不推薦使用這些前綴的 象窗體和報表這樣的數(shù)據(jù)庫對象變量的標(biāo)記符是與數(shù)據(jù)庫對象的標(biāo)記符是一樣的,這樣命名有助于編程,因為通常你分配給一個變量的名稱(如tblVendor)與它所引用的對象(tblVendor)有同樣的名稱
33、,這樣就會在編程中提供統(tǒng)一的對象 2. 常量和自定義數(shù)據(jù)類型 使用大寫名字作為常量,這是WINDOWS編程的一種習(xí)慣, 3. 范圍前綴 命名級別2中引入了變量和常量的范圍前綴的概念,范圍放在其它所有前綴的前面 ? 局部定義的變量沒有前綴 ? 局部定義的靜態(tài)變量前綴為 "s", 例如 "sintAccumulate". ? 在模塊聲明節(jié)里(或窗體代碼)定義的變量使用m作為前綴,例如 "mcurRunningSum". ? 使用 Global 定義的全局變量使用前綴 "g", 例如 "glngGrandTotal". ?
34、 作為函數(shù)或子程序參數(shù)傳遞的變量 (函數(shù)名稱后面的圓括號里) 使用前綴 "p", 例如 "pstrLastName". 另外, 當(dāng)在一個函數(shù)定義部分形參和值參都存在時,我們有時也使用 "r" 而不是 "p" 來指明是形參, 用 "v" 來指明是值參,。 ? 對象名稱后面的限定符進(jìn)一步區(qū)分那些意義很接近的對象. 你可能已經(jīng)針對各類應(yīng)用設(shè)計了自己的一系列限定符,不過,下表中有些通用的限定符 變量屬性 限定符 例子 Current element of set Cur iaintCur First element of set First iaintStockFirst Last element of set Last iaintStockLast Next element of set Next strCustomerNext Previous element of set Prev strCustomerPrev Lower limit of range Min iastrNameMin Upper limit of range Max iastrNameMax Source Src lngBufferSrc Destination Dest lngBufferDest
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。