




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Access 命名規(guī)則: 網(wǎng)址:www.office- 好的命名規(guī)則讓你受益終生 為什么在程序編寫中需要遵循一個好的命名規(guī)則呢。首先,統(tǒng)一的命名標準能夠讓你的代碼始終保持一致的風格,便于你自己看懂,也便于與別的開發(fā)人員交流和溝通,實際上,這些標準也是一種語言,這是你們溝通最好的媒介,有了它,你甚至不需更多的解釋,對方就能看懂你的程序。 1.編程老手可能會長期用隱含錯誤的方式編程(習慣成自然),發(fā)現(xiàn)毛病后都不愿相信那是真的!2.編程高手可以在某一領域?qū)懗鰳O有水平的代碼,但未
2、必能從全局把握軟件質(zhì)量的方方面面。3.在團體開發(fā)中, 一個好的命名規(guī)則能夠最大限度的實現(xiàn)程序共享, 加快開發(fā)進度。讓協(xié)作者、后繼者和自己在現(xiàn)在或?qū)砗芫靡院螅谧疃痰臅r間內(nèi)看清你的程序結構,理解你的設計思路。從而大大提高代碼的可讀性、可重用性、可移植性。4.通過命名注入更多的信息在源代碼中,可以使你的程序易讀和易于維護,減少一些隱性錯誤,同時大大縮短你寫程序注釋和程序文檔的時間,因為你的命名實際上已經(jīng)是一種程序注釋。5.提高與ACCESS對象協(xié)作的能力, 包括對象的排序, 自已函數(shù)庫的編寫, 以及查找與替換的能力,例如你更容易把報表和窗體對象、表和查詢對象分開并按照一定的規(guī)則排序。6.有利于程
3、序編寫工具的開發(fā), 可以編寫自己的加載項并遵守好的命名規(guī)則來加快程序代碼的編寫、排版以及自動糾錯。如全局查找與替換工具、代碼分析與優(yōu)化工具、報表自動生成工具等等。7.更易于發(fā)現(xiàn)代碼的錯誤并更易于修正錯誤,當系統(tǒng)的要求實現(xiàn)的功越來越復雜或當代碼量到達一定的規(guī)模, 不管程序員是否愿意, 出現(xiàn)錯誤幾乎都是不可避免的,但如果大家都遵循一定的編程標準,則可以最大限度地降低錯誤出現(xiàn)的機率, 而且在出現(xiàn)錯誤的情況下也能迅速地發(fā)現(xiàn)和排除。8.長期遵循一個好的命名規(guī)則能讓你長期穩(wěn)定地編寫高質(zhì)量、高效率和更大型的程序。 LNC for Microsoft Access 命名規(guī)則簡
4、介: LNC即Leszynski Naming Convention, 原來在The Leszinski/Reddick Guidelines for Access 1.x, 2.x這本白皮書中由Stan Leszynski 和 Greg Reddick 推薦使用的命名規(guī)則, LNC 開始于 Access 1.0這個版本, 后來隨著ACCESS版本的升級,這個命名規(guī)則就被迅速傳播開來, 在當今ACCESS和VB開發(fā)者和開發(fā)團體中, 它已經(jīng)成為事實中的命名標準, 在國外已經(jīng)廣泛被使用,并被微軟推薦使用, 它規(guī)范了從ACCESS數(shù)據(jù)
5、庫設計、窗體與報表的設計以及程序的編寫一整套完整且易用的命名標準, 我看過國內(nèi)許多VB和ACCESS源程序, 但很少人, 特別在ACCESS程序員中, 注意到命名規(guī)則并遵循某種命名約定, 這給程序交流造成了很大的困難, 同時, 由于程序員自己沒有一套標準的命名規(guī)則, 在編寫過程中隨意命名, 隨著時間的推移, 自已都難以閱讀和修改以前的程序源碼。 LNC for Microsoft Access 詳解: LNC命名規(guī)則分為兩個級別,級別1是比較容易理解的,但級別2對對象進行了更嚴格的劃分,級別1更
6、多地適合初級程序員,而級別2則更適合于一些有經(jīng)驗的開發(fā)者,或在一些非常復雜或多層結構的系統(tǒng)開發(fā)中使用,你應該根據(jù)你自己的經(jīng)驗和習慣來選擇更適合你的命名規(guī)則級別。請注意,不是命名規(guī)則的所有部分都分為兩個級別,而只是在某些部分有所不同 LNC命名規(guī)則是基于匈牙利命名法,為什么叫匈牙利命名法呢,主要是取自于作者的國籍,它的作者 Charles Simonyi ,也曾經(jīng)使用過ACCESS的早期版本。匈牙利命名法是在他的博士論文中提到的。匈牙利命名法的一些基本原理在Visual Basic的說明手冊和一些開發(fā)文檔中都會被提及到,微軟內(nèi)部也是使用匈牙利命名法,在世界上,已經(jīng)有非常多的
7、程序員在使用這個命名法,LNC命名規(guī)則實際上是將匈牙利命名法應用到ACCESS上, 并特別針對ACCESS一些特征進行了一些完善。 LNC命名規(guī)則提倡所有的對象的名稱均由下面四個部分組成: 一個或多個前綴、一個標記符、基本名字、限定詞prefixestagBasenameQualifier 注:里的內(nèi)容表示為可選內(nèi)容。 標記符是必須的內(nèi)容,但一般情況下,你都需要一個基本名字來準確描述你的變量的實際功能,以用來區(qū)分同類型的不同意義的變量。如果你僅僅使用一個標記符來標記一個變量,那么就比較難以分辨不同
8、的變量,但有一種情況除外,那就是你傳一個對象參數(shù)給另一個函數(shù)時,可以不需要指定基本名字,例如你需要傳遞一個窗體對象給一個初始化窗體顏色的函數(shù),那么這個作為參數(shù)傳遞的窗體對象實際上是作為一種通用的窗體對象,所以你不必為它指定一個具體的名字,而直接使用標記符即可。 下面舉出幾個簡單的例子: 名稱前綴標記符基本名字限定符備注tblCustomer tblCustomer 客戶表aintPartNumaintPartNum 零件號數(shù)組strCustNamePrev strCustNamePrev原來的客戶名 前綴和標記符
9、總是小寫的,這樣當我們的眼光掃過對象名稱時,目光就會停留在以大寫字母開頭的基本名字上面,這樣提高了名稱的可讀性,基本名字和限定符都是以大寫字母開頭的。 基本名字簡潔地描述了這個對象的意義,而非描述它的類別,例如在查詢qryPartNum這個名稱中,PartNum就是基本名字,它是 “Part Number”的縮寫,對象的標記符應該是簡單且易記憶的,而前綴是放在對象名和標記符之前,用來提供更多或額外的信息,例如數(shù)字對象intPartNum前加個a, 代表這個零件號數(shù)組,即aintPartNum,更進一步,如果我們需要一個變量來指定aintPartNum這個數(shù)組的索引,那需要
10、在這個數(shù)組的前面再加一個前綴I,那這個變量的名稱應該是iaintPartNum。當然,你會發(fā)現(xiàn),如果嚴格按照上述的規(guī)范來命名你所有的對象,需要你付出更多的努力并增加你現(xiàn)有的工作量,但如果一年后讓你重新來修改下面這兩種風格的代碼,你會覺得哪種更易于修改和更易于重用呢。 第一種風格:Z = Y(X) 第二種風格:intPart = aintPartNum(iaintPartNum) 對象限定符是在基本名字后面再加一個符號以更具體闡明這個對象,我們還是以前面的iaintPartNum為例,如果你想為這個數(shù)組保存兩個索引號,一個是第一個索引號,一個是最后一個索引號,在ia
11、intPartNum加上限定符就變成了iaintPartNumFirst和iaintPartNumLast 命名數(shù)據(jù)庫對象: 數(shù)據(jù)庫對象(表、查詢、窗體、報表、宏、模塊)是在ACCESS應用程序中經(jīng)常被引用的對象,它們會出現(xiàn)在宏、VBA代碼和屬性中,所以如何對它們正確命名是非常重要的。微軟所帶的Northwind數(shù)據(jù)庫例程以及微ACCESS手冊中允許對象名中存在空格,但我們不建議這種命名風格,在許多數(shù)據(jù)庫引擎和編程語言中,包括ACCESS BASIC,空格是一種分隔符,它不是對象名稱的一個邏輯部分,而且,在許多數(shù)據(jù)
12、庫平臺中包括微軟的SQL SERVER數(shù)據(jù)庫和WORD文字處理程序,帶有空格的名稱是不能工作的。相反,使用一種大小寫混合的方式來指定名稱,例如:tblAccountsPayable,如果一定要使用空格,那就用下劃線“_”來取代它。 對LNC命名規(guī)則中,所有數(shù)據(jù)容器對象都有一個標記符,在對象名稱前面加上標記符對非編程人員來說可以不會增加太多可讀性,但對于編程新手來說,當他們需要在報表精靈的數(shù)據(jù)源列表框或一個窗體的控件源選擇一個表或查詢時,添加標記符會帶來很大幫助,因為ACCESS會把表和查詢不加分別地放在一個長列表里。下面是級別1的數(shù)據(jù)庫容器對象的標記符:對象標記符例子Tabletbl
13、TblCustomerQueryqryqryOverAchieverFormfrmFrmCustomerReportrptrptInsuranceValueMacromcrmcrUpdateInventoryModulebasBasBilling 在級別1, 數(shù)據(jù)庫容器對象唯一需要的一個限定符就是 Sub, 它是放在那些子窗體或子報表的窗體名的后面. 例如窗體 frmProductSupplier 擁有一個相關的子窗體frmProductSupplierSub. 這樣,一旦排序時,對象和它的子對象就會順序排在一起。 下面是級別2的數(shù)據(jù)庫容器對象的標記符:對象標記
14、符例子TabletbltblCustomerTable (lookup)tlkptlkpShipperQuery (select)qry (or qsel)qryOverAchieverQuery (append)qappqappNewProductQuery (crosstab)qxtbqxtbRegionSalesQuery (data definition)qddlqddlAddWorkColumnQuery (delete)qdelqdelOldAccountQuery (form filter)qfltqfltSalesTodayQuery (lookup)qlkpqlkpStatu
15、sQuery (make table)qmakqmakShipToQuery (pass-through)qsptqsptArchiveQuantityQuery (union)quniquniOrderDetailQuery (update)qupdqupdDiscountFormfrmfrmCustomerForm (dialog)fdlgfdlgLoginForm (menu)fmnufmnuUtilityForm (message)fmsgfmsgWaitForm (subform)fsubfsubOrderReportrptrptInsuranceValueReport (subre
16、port)rsubrsubOrderMacromcrmcrUpdateInventoryMacro (for form)mformnamemfrmCustomerMacro (menu)mmnummnuEntryFormFileMacro (for report)mrptnamemrptInsuranceValueModulebasbasBilling 如果使用級別2 的命名規(guī)則,則在數(shù)據(jù)庫容器里排序時,有著類似功能的對象會排在一起,當你的應用越來越大時,在你的數(shù)據(jù)庫系統(tǒng)中可能會包含100個窗體或者更多,而其中30個窗體是用來顯示消息用的,如果有一天,你需要將這個消息窗體里面的文本框
17、的文字由黑色全部改成紅色,你必須逐一打開每個窗體確定它是否消息窗體然后再修改文本框的顏色,但如果你把它們的名稱設為包含同樣的標記符fmsg, 那么排序時它們會排在一起,那你修改的時候就不必一個一個去篩選了,大大節(jié)約了你修改時間。請小心仔細地選擇表的名稱,因為改變ACCESS對象的名稱并不會自動應用到整個數(shù)據(jù)庫,所以當在ACCESS對象創(chuàng)建時給它正確命名是非常重要的。例如,在以后的開發(fā)過程中如果需要改變表的名稱,你可需要改變所有引用到到這個表名的表、查詢、窗體、報表、宏和模塊中引用到到這個表名,雖然,有一些輔助工具可以幫你減輕一些工作量,但最好還是在一開始就給它正確地命名。
18、;你可能希望引用了一個表的每個數(shù)據(jù)對象都有一個與表名一樣的基本名字,而使用相應的標記符來區(qū)分它們,例如,你的表名是tblCustomer,它的主窗體名應該是frmCustomer,它的主報表名應該是rptCustomer,而引發(fā)相關這些事件的宏名應該是mfrmCustomer和mrptCustomer,我們也建議表的名稱不宜用復數(shù)形式,例如使用tblCustomers,因為一個表通常都是包含多條記錄的,這暗示它本身就是復數(shù)的。 數(shù)據(jù)庫對象前綴 ?我們使用四種數(shù)據(jù)庫對象前綴: ?"zz"表示那些你已經(jīng)廢棄的但是可能想要在數(shù)據(jù)庫中將來
19、作為參考或保存使用的對象 (舉例來說,zzfrmPhoneList). "zz"將導致對象名稱排在數(shù)據(jù)庫容器的底部,這樣,它就會放在一個不顯眼的地方,但它仍然是有效的。?"zt"表示一些臨時的對象 (舉例來說,ztqryTest). .1"zs"表示系統(tǒng)對象 (舉例來說,zstblObjects). 系統(tǒng)對象是那些不被最終用戶使用的那些有關系統(tǒng)開發(fā)和維護方面的對象,例如錯誤日志,開發(fā)注解,文檔,關聯(lián)信息等等. (注意 "zs" 是前綴.這樣系統(tǒng)對象就會盡量排在數(shù)據(jù)庫容器的底部). "_" 來表示
20、那些正在開發(fā)中的對象 (舉例來說,_mcrNewEmployee). 一個對象名字前面加上下劃線可使它排在數(shù)據(jù)庫容器的頂端,提醒你它需要注意. 當這個對象已經(jīng)全部完成后 ,除去下劃線,它將會正常地排序. 字段標志符 在字段上使用標志符一直是一個爭議的話題,甚至在這個文章的作家之間也存在不同的見解. Greg主張字段標志符也應該統(tǒng)一使用與其它ACCESS數(shù)據(jù)對象及VBA中使用的一樣的命名規(guī)則 ,而Stan則更喜歡使用一種與平臺和數(shù)據(jù)類型無關的命名方式,即字段名稱不需要加字與字段類型相關的標志符,這樣有助于數(shù)據(jù)庫移植和相互連通。 考慮到兩者的立場,連同你自己的需求,你們可以選擇
21、在命名時是否加入下表這些標志符:數(shù)據(jù)類型標志符例子BinaryBinbinInternalByteBytbytFloorNumCounterLnglngPKCntCurrencyCurcurSalaryDate/TimeDtmdtmHireDateDoubledbldblMassIntegerint (C programmers may prefer "w")intUnitLonglng (C programmers may prefer "dw")lngPopulationMemomemmemCommentsOleoleoleEmpPhotoSingl
22、esng (Some users find "sgl" more mnemonic )sngScoreTextstr (Used as opposed to "txt" because a textbox control uses "txt". C programmers may prefer "sz")strFirstNameYes/Noysn (C programmers may prefer "f")ysnDiscounted ?注意: .2ACCESS引擎 ("jet
23、") 支持二進制的數(shù)據(jù)類型,但它并沒有對用戶開放這種功能,但是你可以通過匯入或鏈接到外部表來實現(xiàn)這種數(shù)據(jù)類型,而且,一些系統(tǒng)表也使用這種數(shù)據(jù)類型命名。.3在ACCESS內(nèi)部,自動編號數(shù)據(jù)類型是當作是一種長整型來對待,只是增加了一個auto-increment的特殊屬性,而自動編號字段經(jīng)常會作為外鍵被其它表引用,所以Greg使用了與長整型同樣的標記符,但如果你想?yún)^(qū)分長整型與自動編號類型,則可以在對象名稱最后加上Cnt限定符.4標簽控件對象當你創(chuàng)建一個新的綁定控件時,窗體或報表會自動分配字段的名稱給這個控件名稱,控件與字段使用相同的名稱會導致命名的混亂,特別你在VBA代碼中同時引用到字段
24、和控件,有時會導致一些錯誤,為避免這種情況,需要在控件名稱前面加上標記符,例如一個文本框控件,它的控件來源是Customer,那么我們給它取的名稱就是txtCustomer.在級別1 中,使用者只是想?yún)^(qū)分活動控件和標簽,對不太關心控件的類型,這樣,控件的標記符就如下所示: ObjectTagExampleLabellbllblLastNameOther typesctlctlLastName 級別1描述了了控件之間一個很小的差異性的,不過,它在函數(shù)、宏或程序文檔還是非常有用的,例如,通過它可以區(qū)別哪些控件是屬于標簽,那些是其它控件,其中前者是不可修改的,而后者則可從用戶輸入
25、或代碼中接受值級別2指明了窗體或報表中控件的類型,這樣VBA代碼或宏更容易區(qū)分這些控件的屬性和事件 對象標記符例子Chart (graph)chtchtSalesCheck boxchkchkReadOnlyCombo boxcbocboIndustryCommand buttoncmdcmdCancelFrame (object)frafraPhotoLabellbllblHelpMessageLinelinlinVerticalList boxlstlstPolicyCodeOption buttonoptoptFrenchOption groupgrpgrpLanguagePa
26、ge breakbrkbrkPage1Rectangle (Visual Basic uses the term "shape")shpshpNamePanelSubform/reportsubsubContactText boxtxttxtLoginNameToggle buttontgltglForm 對控件來說,唯五的前綴就是 “zs”,它只出現(xiàn)在級別2中,它表明這是一個系統(tǒng)控件,只被窗體或代碼使用,而不對用戶開放,例如有些控件在運行時是不可見的,但它可能用來存儲一些臨時值或傳遞參數(shù)給窗體唯一的前綴為控制, &quo
27、t;zs",出現(xiàn)在水平 2. 它指示系統(tǒng)- 水平被形式用或編碼的控制但是不對使用者顯示. 如此的控制通常不對感到看得見的跑計時但是他們可能儲存暫時的價值,否則叁數(shù)傳給形式. 命名代碼或宏中的對象: 使用標準的描述性強的變量、常量、和函數(shù)名可大大增強代碼的共享、維護、和聯(lián)接的能力 1.變量的標記符 每個變量都應有一個如下表所示的標記符變量類型標記符例子ContainerconDim conTables as ContainerControlctl
28、Dim ctlVapor As ControlCurrencycurDim curSalary As CurrencyDatabasedbDim dbCurrent As DatabaseDocumentdocDim docRelationships as DocumentDoubledblDim dblPi As DoubleDynasetdynDim dynTransact As DynasetFlag (Y/N, T/F)fDim fAbort As IntegerFieldfldDim fldLastName as FieldFormfrmDim frmGetUser As FormG
29、roupgruDim gruManagers as GroupIndexidxDim idxOrderId as IndexIntegerintDim intRetValue As IntegerLonglngDim lngParam As LongObjectobjDim objGraph As ObjectParameterprmDim prmBeginDate as ParameterPropertyprpDim prpUserDefined as PropertyQueryDefqdf (or qrd)Dim qdfPrice As QueryDefRecordsetrec (or r
30、st)Dim recPeople as RecordsetRelationrelDim relOrderItems as RelationReportrptDim rptYTDSales As ReportSinglesngDim sngLoadFactor As SingleSnapshotsnpDim snpParts As SnapshotStringstrDim strUserName As StringTabletblDim tblVendor As TableTableDeftdf (or tbd)Dim tdfBooking as TableDefType (user-defined)typDim typPartRecord As mtPART_RECORDUserusrDim usrJoe as UserVariantvarDim varInput As VariantWorkspacewrk (or wsp)Dim wrkPrimary as WorkspaceYes/No18ysnDim ysnPaid As Integer在我們的命名方式中,不使用$ 和 %這些數(shù)據(jù)類型前綴,因為在ACCESS和Vis
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 墩、臺身和蓋梁工程現(xiàn)場質(zhì)量檢驗報告單(二)
- 超前錨桿 現(xiàn)場質(zhì)量檢驗報告單
- 酒水采購合同
- 防控疫情知識培訓課件
- 醫(yī)療護理操作規(guī)范測試題
- 武漢手房屋買賣合同書
- 教育范文選錄
- 數(shù)據(jù)采集表:各行業(yè)市場調(diào)研
- 地理信息系統(tǒng)技術應用案例匯編
- 美容儀器采購合同書
- 新能源汽車三電系統(tǒng)知識詳解
- 《魏書生班主任工作漫談》讀書心得體會課件
- 泵站工程設計(共138張課件)
- 部編版五年級上冊快樂讀書吧練習題含答案
- 2024至2030年中國石油瀝青市場前景及投資機會研究報告
- 武漢大學張俊:2024生成式人工智能大模型及其電力系統(tǒng)數(shù)智化應用前沿報告
- (高清版)AQ 1056-2008 煤礦通風能力核定標準
- 《內(nèi)陸干旱區(qū)季節(jié)性河流生態(tài)流量(水量)確定技術導則》
- 壓力性損傷全程鏈式管理
- IATF16949-2016標準和內(nèi)審員培訓
- 2024秋季山西交控集團所屬路橋集團校園招聘270人公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
評論
0/150
提交評論