文章編號: 110264 - 上次校閱: 2003年1月9日 - 版次: 1.1 資訊: Microsoft 諮詢服務 Visual Basic 的命名慣例
在此頁中結論最好建立 Visual Basic 程式碼的命名慣例。本文提供 Microsoft 查閱服務 (MCS) 所使用的命名慣例。 這份文件是 m 的 Visual Basic 程式碼撰寫慣例位於 [Visual Basic 程式設計人員指南。 注意: 由獨立的 Microsoft 廠商製造本文所述的協力廠商控制項。Microsoft 可讓不以暗示或其他方式,提供與這些控制項的效能或可靠性有關的保證。 其他相關資訊命名慣例協助 Visual Basic 程式設計人員:
設定環境選項使用外顯的選項。宣告所有變數來儲存程式設計時間,藉由減少打錯字 (比方說 aUserNameTmp 與所造成的錯誤數目 sUserNameTmp 與 sUserNameTemp 比較)。在 [環境選項] 對話方塊中設定為 [是] 的 [要求變數宣告]。選項明確陳述式會要求您宣告 Visual Basic 程式內的所有變數。 將檔案存成 ASCII 文字檔。將表單 (.FRM) 和模組 (.BAS) 檔案儲存成 ASCII 文字促進版本控制系統的使用,並可能因磁碟損毀的損害減到最少。在另外您可以:
物件標準物件命名的慣例下表定義 MCS 標準物件名稱前置詞。這些前置詞與那些記載在 Visual Basic 程式師指南的一致。Prefix Object Type Example ------------------------------------------------------- ani Animation button aniMailBox bed Pen Bedit bedFirstName cbo Combo box and drop down list box cboEnglish chk Checkbox chkReadOnly clp Picture clip clpToolbar cmd (3d) Command button (3D) cmdOk (cmd3dOk) com Communications comFax ctr Control (when specific type unknown) ctrCurrent dat Data control datBiblio dir Directory list box dirSource dlg Common dialog control dlgFileOpen drv Drive list box drvTarget fil File list box filSource frm Form frmEntry fra (3d) Frame (3d) fraStyle (fra3dStyle) gau Gauge gauStatus gpb Group push button gpbChannel gra Graph graRevenue grd Grid grdPrices hed Pen Hedit hedSignature hsb Horizontal scroll bar hsbVolume img Image imgIcon ink Pen Ink inkMap key Keyboard key status keyCaps lbl Label lblHelpMessage lin Line linVertical lst List box lstPolicyCodes mdi MDI child form mdiNote mpm MAPI message mpmSentMessage mps MAPI session mpsSession mci MCI mciVideo mnu Menu mnuFileOpen opt (3d) Option Button (3d) optRed (opt3dRed) ole OLE control oleWorksheet out Outline control outOrgChart pic Picture picVGA pnl3d 3d Panel pnl3d rpt Report control rptQtr1Earnings shp Shape controls shpCircle spn Spin control spnPages txt Text Box txtLastName tmr Timer tmrAlarm vsb Vertical scroll bar vsbRate 物件資料庫物件命名的慣例Prefix Object Type Example ------------------------------------------ db ODBC Database dbAccounts ds ODBC Dynaset object dsSalesByRegion fdc Field collection fdcCustomer fd Field object fdAddress ix Index object ixAge ixc Index collection ixcNewAge qd QueryDef object qdSalesByRegion qry (suffix) Query (see NOTE) SalesByRegionQry ss Snapshot object ssForecast tb Table object tbCustomer td TableDef object tdCustomers 功能表命名慣例應用程式經常使用功能表控制項的 abundance。如此一來您需要一組不同的命名慣例為這些控制項。功能表控制項首碼應該擴充初始 mnu 標籤之外,藉由新增最終的功能表標題的名稱字串結尾與巢狀結構的每一層額外的前置詞。例如:Menu Caption Sequence Menu Handler Name Help.Contents mnuHelpContents File.Open mnuFileOpen Format.Character mnuFormatCharacter File.Send.Fax mnuFileSendFax File.Send.Email mnuFileSendEmail 其他控制項的命名慣例對於新控制項未列的上方,嘗試隨附唯一的三個字元前置詞。但是,務必更是清除比到停三個字元。對等將的增強的清單方塊的衍生控制項擴充上述首碼如此有沒有混淆哪些控制項上方真的正使用中。小寫的縮寫為製造商也通常將會新增至前置詞。例如,從 Visual Basic 專業 3D 框架可以建立一個控制項執行個體使用 fra3d 前置的詞為避免的混淆哪些控制項正在真正使用。從 MicroHelp 的指令按鈕可以使用 cmdm 區別與標準的指令按鈕 (cmd)。 協力廠商控制項每個協力廠商控制項,用於應用程式中應該會列出在應用程式的 [概觀] 註解區段提供用於控制項、 將控制項的完整名稱和軟體廠商名稱前置詞:Prefix Control Type Vendor cmdm Command Button MicroHelp 變數和例行命名變數和函式名稱具有下列結構: <prefix><body><qualifier><suffix>Part Description Example -------------------------------------------------------------------------- <prefix> Describes the use and scope of the variable. iGetRecordNext <body> Describes the variable. iGetNameFirst <qualifier> Denotes a derivative of the variable. iGetNameLast <suffix> The optional Visual Basic type character. iGetRecordNext% 下列資料表定義根據 Windows C 匈牙利文標記法的變數和函式名稱前置詞。這些前置詞必須搭配所有變數和函式名稱。使用舊的基本尾碼 (例如 %,&,#,等等) 都不建議使用。 變數和函式名稱開頭:
Prefix Converged Variable Use Data Type Suffix
--------------------------------------------------------------------------
b bln Boolean Integer %
c cur Currency - 64 bits Currency @
d dbl Double - 64 bit Double #
signed quantity
dt dat Date and Time Variant
e err Error
f sng Float/Single - 32 Single !
bit signed
floating point
h Handle Integer %
i Index Integer %
l lng Long - 32 bit Long &
signed quantity
n int Number/Counter Integer %
s str String String $
u Unsigned - 16 bit Long &
unsigned quantity
udt User-defined type
vnt vnt Variant Variant
a Array
範圍和使用狀況開頭: Prefix Description g Global m Local to module or form st Static variable (no prefix) Non-static variable, prefix local to procedure v Variable passed by value (local to a routine) r Variable passed by reference (local to a routine) iSend-代表所傳送的訊息數目 這些變數名稱的每個東西非常不同告訴程式設計人員。 變數的名稱將減少以傳送 %時,這項資訊會遺失。例如 g 和 m 範圍前置詞也有助於減少尤其是在 multi-developer 專案名稱爭用問題。 bSend-定義的最後一個傳送作業成功 A 布林旗標 hSend-通訊介面的控制碼 匈牙利文標記法是由 Windows C 程式設計人員也被廣泛使用,而且經常參考在 Microsoft 產品文件和產業程式設計書籍中。此外,債券 C 程式設計人員和程式設計人員使用 Visual Basic 之間將會變成為 Visual C++ 開發系統可獲得動量更強壯。此轉換將會導致許多 Visual Basic 程式設計人員的第一次和許多程式設計人員經常前後移動這兩種環境之間移動到 C。 本文的變數和常式的名稱變數或例行名稱的主體應該使用混合大小寫,而且應該只要說明其用途的必要。在另外的函式名稱應該開頭如 InitNameArray 或 CloseDialog 一個動詞命令。經常使用或長詞彙標準縮寫被建議來協助保持名稱長度合理的。在一般變數名稱大於 32 個字元可以是難以閱讀的 VGA 顯示器。 使用 [縮寫時請確定它們是整個應用程式一致。隨機 Cnt] 及 [間隔間切換專案中會導致不必要的混淆。 變數和常式的名稱上的限定詞相關的變數和常式常用來管理及操作常見的物件。在這些情況下使用標準的限定詞加衍生的變數和常式。雖然放限定詞之後主體的名稱看起來有點怪怪 (如同在 sGetNameFirst,代替 sGetFirstName sGetLastName sGetNameLast),本練習會幫助的順序列出這些名稱一起在 Visual Basic 編輯器常式,讓邏輯和結構的應用程式更容易瞭解。 下表定義通用的辨識符號和它們的標準意義:
Qualifier Description (follows Body)
--------------------------------------------------------------------------
First First element of a set.
Last Last element of a set.
Next Next element in a set.
Prev Previous element in a set.
Cur Current element in a set.
Min Minimum value in a set.
Max Maximum value in a set.
Save Used to preserve another variable that must be reset later.
Tmp A "scratch" variable whose scope is highly localized within the
code. The value of a Tmp variable is usually only valid across
a set of contiguous statements within a single procedure.
Src Source. Frequently used in comparison and transfer routines.
Dst Destination. Often used in conjunction with Source.
使用者定義型別附加至符號名稱結尾 _TYPE 使用宣告中全部大寫的使用者定義型別。例如:命名常數本文的常數名稱應該是 UPPER_CASE 有字與字之間的底線 (_)。雖然標準的 Visual Basic 常數並沒有包含匈牙利的資訊,首碼喜歡 i、 s、 g,且 m 只能在了解值和常數的範圍非常有用。如常數名稱請遵循與變數相同的規則。例如:Variant 資料型別如果您知道某個變數永遠儲存特定型別的資料,Visual Basic 可以處理該資料更有效率地如果宣告該型別的變數。不過,使用資料庫、 訊息、 DDE 或 OLE 時 Variant 資料型別可以是非常有用。許多資料庫允許 NULL 做為有效的值的欄位。您的程式碼需要區分 NULL 0 (零) 和""(空字串)。許多時候這些類型的作業可以使用並不需要知道它會接收處理或傳遞資料的資料類型的一般服務常式。例如: 註解您的程式碼所有程序和函式應該以簡短註解描述功能特性 (它的功用) 常式的開頭。因為這些通常隨著時間而改變,還,導致不必要的註解維護工作或更糟錯誤的註解這項描述不應該說明實作詳細資料 (它怎麼它)。程式碼本身和任何必要的在 [線條] 或 [本機註解將描述實作。參數傳遞至一個常式應該所述,當它們的函式不明顯,而且當常式預期有要在特定範圍參數。函式傳回值和 (尤其是透過參考參數) 常式會變更的全域變數必須也會描述每個常式的開頭。 例行的標頭註解區塊應該看起來像此 (請參閱下一節格式設定程式碼 」,如範例):
Section Comment Description
--------------------------------------------------------------------------
Purpose What the routine does (not how).
Inputs Each non-obvious parameter on a separate line with
in-line comments
Assumes List of each non-obvious external variable, control, open file,
and so on.
Returns Explanation of value returned for functions.
Effects List of each effected external variable, control, file, and
so on and the affect it has (only if this is not obvious)
變數、 控制項和常式應該清楚命名內嵌註解只需用於複雜或非直覺式的實作細節中。 對話方塊的應用程式正在列舉主要資料物件、 常式、 演算法,概觀描述,資料庫和檔案系統相依性等等應該包含.BAS 模組,包含專案的 Visual Basic 泛用的常數宣告的開頭。 注意: [專案] 視窗原本就是說明因此概觀本節只需要提供最重要的檔案以及模組,資訊在專案中的檔案或檔案並不會列出 [專案] 視窗,例如初始化 (.INI) 或資料庫檔案的清單。 您的程式碼的格式設定因為許多程式設計人員仍然可以使用 VGA 顯示,螢幕房地產必須被 conserved 約可能同時仍能讓反映邏輯結構和巢狀的格式設定的程式碼。巢狀縮排的標準的索引標籤型區塊應該是二到四個空格。四個以上的空格不是必要的而且可能導致陳述式來隱藏或不小心被截斷。少於兩個空格不會充分顯示邏輯巢狀結構。「 Microsoft 知識庫 」 中,我們會使用三個空間縮排。使用環境選項] 對話方塊來設定預設值] 索引標籤寬度。 功能概觀註解的常式應該要縮排一個空格。 遵循概觀註解最高等級陳述式應該是縮排一個定位,與每個巢狀的區塊縮排一個額外的索引標籤。例如: 運算子永遠使用連字號 (&),當串連字串,並使用數值時使用加號 (+)。使用加號 (+) 與非-數值,可能會造成您的問題上兩個變種運算時)。 例如:範圍具有最小的範圍可能,應該一直被定義變數。 全域變數可以建立 enormously 複雜狀態機器,並讓應用程式邏輯非常難以瞭解。全域變數也將重複使用和維護您的程式碼更難。 在 Visual Basic 中的變數可以有下列領域:
Scope Variable Declared In: Visibility
--------------------------------------------------------------------------
Procedure-level Event procedure, sub, or Visible in the
function procedure in which
it is declared
Form-level, Declarations section of a form Visible in every
Module-level or code module (.FRM, .BAS) procedure in the
form or code
module
Global Declarations section of a code Always visible
module (.BAS, using Global
keyword)
如果您必須使用全域變數,很好的作法宣告全部的單一模組中,並將它們組成群組,由函式。為模組有意義的名稱,表示它的目的,例如 GLOBAL.BAS。 (這應該不會被傳送) 的全域變數、 程序和函式是例外應該只在上作業會傳遞至它們的物件。應該在常式的開頭的 [一般註解] 區域中識別常式中所使用的全域變數。在另外將引數傳遞至潛艇和使用 ByVal,函式,除非您明確地想要變更傳遞的引數的值。 撰寫儘模組化的程式碼。比方說如果您的應用程式會顯示一個對話方塊,將所有控制項和執行在單一表單] 對話方塊的工作所需的程式碼。這有助於保護應用程式的程式碼組織成有用的元件,並將最小化其執行階段額外負荷。 協力廠商控制項注意: 由獨立的 Microsoft 廠商製造下面討論的產品。Microsoft 可讓不以暗示或其他方式,提供與這些產品的效能或可靠性有關的保證。下表列出要與控制項的前置詞一起使用的標準的協力廠商名稱前置字元: Vendor Abbv ------------------------- MicroHelp (VBTools) m Pioneer Software p Crescent Software c Sheridan Software s Other (Misc) o
Control Control Abbr Vendor Example VBX File
Type Name Name
--------------------------------------------------------------------------
Alarm Alarm almm MicroHelp almmAlarm MHTI200.VBX
Animate Animate anim MicroHelp animAnimate MHTI200.VBX
Callback Callback calm MicroHelp calmCallback MHAD200.VBX
Combo Box DB_Combo cbop Pioneer cbopComboBox QEVBDBF.VBX
Combo Box SSCombo cbos Sheridan cbosComboBox SS3D2.VBX
Check Box DB_Check chkp Pioneer chkpCheckBox QEVBDBF.VBX
Chart Chart chtm MicroHelp chtmChart MHGR200.VBX
Clock Clock clkm MicroHelp clkmClock MHTI200.VBX
Button Command cmdm MicroHelp cmdmCommandButton MHEN200.VBX
Button
Button DB_Command cmdp Pioneer cmdpCommandButton QEVBDBF.VBX
Button (Group) Command cmgm MicroHelp cmgmBtton MHGR200.VBX
Button
(multiple)
Button Command cmim MicroHelp cmimCommandButton MHEN200.VBX
Button
(icon)
CardDeck CardDeck crdm MicroHelp crdmCard MHGR200.VBX
Dice Dice dicm MicroHelp dicmDice MHGR200.VBX
List Box (Dir) SSDir dirs Sheridan dirsDirList SS3D2.VBX
List Box (Drv) SSDrive drvs Sheridan drvsDriveList SS3D2.VBX
List Box (File) File List film MicroHelp filmFileList MHEN200.VBX
List Box (File) SSFile fils Sheridan filsFileList SS3D2.VBX
Flip Flip flpm MicroHelp flpmButton MHEN200.VBX
Scroll Bar Form Scroll fsrm MicroHelp fsrmFormScroll ???
Gauge Gauge gagm MicroHelp gagmGauge MHGR200.VBX
Graph Graph gpho Other gphoGraph XYGRAPH.VBX
Grid Q_Grid grdp Pioneer grdpGrid QEVBDBF.VBX
Scroll Bar Horizontal hsbm MicroHelp hsbmScroll MHEN200.VBX
Scroll Bar
Scroll Bar DB_HScroll hsbp Pioneer hsbpScroll QEVBDBF.VBX
Graph Histo hstm MicroHelp hstmHistograph MHGR200.VBX
Invisible Invisible invm MicroHelp invmInvisible MHGR200.VBX
List Box Icon Tag itgm MicroHelp itgmListBox MHAD200.VBX
Key State Key State kstm MicroHelp kstmKeyState MHTI200.VBX
Label Label (3d) lblm MicroHelp lblmLabel MHEN200.VBX
Line Line linm MicroHelp linmLine MHGR200.VBX
List Box DB_List lstp Pioneer lstpListBox QEVBDBF.VBX
List Box SSList lsts Sheridan lstsListBox SS3D2.VBX
MDI Child MDI Control mdcm MicroHelp mdcmMDIChild ???
Menu SSMenu mnus Sheridan mnusMenu SS3D3.VBX
Marque Marque mrqm MicroHelp mrqmMarque MHTI200.VB
Picture OddPic odpm MicroHelp odpmPicture MHGR200.VBX
Picture Picture picm MicroHelp picmPicture MHGR200.VBX
Picture DB_Picture picp Pioneer picpPicture QEVBDBF.VBX
Property Vwr Property pvrm MicroHelp pvrmPropertyViewer MHPR200.VBX
Viewer
Option (Group) DB_RadioGroup radp Pioneer radqRadioGroup QEVBDBF.VBX
Slider Slider sldm MicroHelp sldmSlider MHGR200.VBX
Button (Spin) Spinner spnm MicroHelp spnmSpinner MHEN200.VBX
Spreadsheet Spreadsheet sprm MicroHelp sprmSpreadsheet MHAD200.VBX
Picture Stretcher strm MicroHelp strmStretcher MHAD200.VBX
Screen Saver Screen Saver svrm MicroHelp svrmSaver MHTI200.VBX
Switcher Switcher swtm MicroHelp swtmSwitcher ???
List Box Tag tagm MicroHelp tagmListBox MHEN200.VBX
Timer Timer tmrm MicroHelp tmrmTimer MHTI200.VBX
ToolBar ToolBar tolm MicroHelp tolmToolBar MHAD200.VBX
List Box Tree trem MicroHelp tremTree MHEN200.VBX
Input Box Input (Text) txtm MicroHelp inpmText MHEN200.VBX
Input Box DB_Text txtp Pioneer txtpText QEVBDBF.VBX
Scroll Bar Vertical vsbm MicroHelp vsbmScroll MHEN200.VBX
Scroll Bar
Scroll Bar DB_VScroll vsbp Pioneer vsbpScroll QEVBDBF.VBX
這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:110264?
(http://support.microsoft.com/kb/110264/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



回此頁最上方
