成功的開發團隊要求隊伍中的每一位成員遵守代碼重用規則,這些規定把代碼的重用性推到極至同時卻不會顯著降低開發人員的創造力和開發效率。如果編寫和使用代碼的開發人員遵守共同的程序命名規范代碼和代碼注釋要求,那麼代碼的重用性就會得以大大提升。這些標准的起點是系統結構級的。你的功能規范應該在類、屬性的名字、函數返回值以及其他關鍵程序元素的定義中反映這些標准。本文將就基本的命名規則和注釋提出一些可行的建議,意圖幫助讀者開發自己的代碼重用標准。
大小寫標准
在我們開始討論各類程序要素命名的正確方式之前,先讓我們定義區分元素的字符大小寫的兩種最常用方式,它們是:
Pascal規范—第1個字符大寫,目標名中的每個單詞的第1個字母也大寫,比如InvoiceNumber或者PrintInvoice。其他的所有字符都小寫。
Camel規范—第1個字符不大寫,但目標名中的每個單詞的第1個字母大寫,比如,invoiceNumber。其他的所有字符都小寫。
可是,采用字符大小寫區分元素可能在對大小寫不敏感的編程語言中引發問題。比方說,由於C#語言區分大小寫,所以你可以調用私有變量employee,接著它所具有的公共屬性Employee則可以被調用者所用。這些操作是完全合法的。但是,對Visual Basic來說就會產生錯誤,因為VB是不區分字母大小寫的,以上兩種元素在VB看來都是一回事。假如你在混合語言環境下工作,你只能指定某些規則要求開發人員合理利用多種語言閱讀其他人開發的代碼。
命名標准
假設我們采用了以上的大小寫標准,現在就讓我們了解一些通用程序元素的簡單命名建議。
類
某些類設計為模擬真實世界的對象,就這些類來說,所選用的名字就應該反映真實世界的對象、具有單數名詞的格式,比方Employee、 Invoice或者Timecard等。對內部類而言可以采用Pascal規范令結果類具有單數形式的名字,比如ThreadPool或者CustomColor等。類應當是單數的,這樣它們的復數形式就可以代表同類的集合名,比如Employees數組等。
類的成員
采用C#以及其他大小寫敏感編程語言的開發人員應當采用camel規范命名類成員的名字。這樣做可以讓開發者更易於區分內部變量的名字(name)和公共屬性的名字(Name)。許多VB開發人員更喜歡采用匈牙利命名法為類成員起名,也就是在名字前面加上前綴表示變量的類型,比如sName就指的是string類型的Name變量。我認為,在使用VS.NET這樣高級的開發環境下這樣做是不必要的,因為在這種情況下系統鼠標停留在變量之上即可可自動顯示變量的類型。我個人喜歡在類成員名前加上前綴:小寫的字母m。這樣內部變量就保存了足夠的內部類信息:內部變量mName就正好代表了公共屬性Name。
方法
方法應該用Pascal規范命名,同時用合理的方式說明他們的實施行為。比方說,給數據庫添加雇員的方法可以命名為AddEmployee,而打印發票的方法則不妨命名為PrintInvoice。假如方法返回的是布爾值,那麼方法名應該以動詞開頭以便用在if語句的時候其含義更明顯。比如說,假如你有一個方法的功能是確定某位雇員是否符合公司401k計劃的要求,那麼你可以在If語句中調用IsEligible401k方法:If IsEligible401k then…
方法參數、返回值和變量
所有的方法參數、返回值和變量都應該采用Pascal規范命名,同方法名一樣也應該能反映參數或者變量所代表的含義。這一點對參數方法而言特別重要,因為你在調用方法的時候智能感知(Intellisense)會返回參數名和參數類型。所有采用方法的開發人員都應該使用描述性的名字和類型,便於相互理解其含義。
控件
控件命名是開發領域一個經常引發爭議的問題。雖然大多數人贊同不應該使用控件的默認名稱,比如TextBox1或者Label1等等,但是,他們還反對按照變量的方式命名控件或者采用前綴表示控件的類型。我比較喜歡采用標准的三字母前綴命名窗體中控件的名字。比如說,保存姓氏和名字的文本框控件就不妨分別命名為txtLastName和txtFirstName。處理窗體數據的命令按鈕則可以命名為cmdSubmit或者cmdCancel。其實,只要你能保證控件命名的一致性而且標准易於理解即可。
注釋
注釋代碼對所有開發人員來說都是必要的。為了教授正確的注釋技術,我就經常在自己的演示程序中添加注釋代碼。同時,為了簡化注釋過程,我建議開發人員首先編寫注釋說明他們想編寫的程序。我首先會寫注釋說明程序中的過程、類或者其他程序要素,但對其具體工作原理不做闡述。然後我會編寫一系列的注釋代碼描述過程的每一主要步驟或者類的元素。在編寫了定義類或者說明過程的代碼之後,我對各個外部變量、控件、打開的文件乃至其他過程所訪問的元素文檔化,對輸入參數和返回值做簡要說明。
如果你在使用C#開發程序,那麼VS.NET環境已具有內置的工具幫助你把內部C# 注釋轉換為外部HTML文檔。你可以在自己的文檔中加上特殊的處理指示符而改變外部文檔的表示方式。有關這方面的更多信息可以參考VS.NET內部幫助文件: ms-help://MS.VSCC/MS.MSDNVS/csref/html/vcoriXMLDocumentation.htm.