編寫易讀的程式碼 (轉)

worldblog發表於2007-12-12
編寫易讀的程式碼 (轉)[@more@]



 

成功的開發團隊要求隊伍中的每一位成員遵守程式碼重用規則,這些規定把程式碼的重用性推到極至同時卻不會顯著降低開發人員的創造力和開發。如果編寫和使用程式碼的開發人員遵守共同的命名規範程式碼和程式碼註釋要求,那麼程式碼的重用性就會得以大大提升。這些標準的起點是結構級的。你的功能規範應該在類、屬性的名字、返回值以及其他關鍵程式元素的定義中反映這些標準。本文將就基本的命名規則和註釋提出一些可行的建議,意圖幫助讀者開發自己的程式碼重用標準。


大小寫標準


在我們開始討論各類程式要素命名的正確方式之前,先讓我們定義區分元素的字元大小寫的兩種最常用方式,它們是:

Pascal規範—第1個字元大寫,目標名中的每個單詞的第1個字母也大寫,比如InvoiceNumber或者PrintInvoice。其他的所有字元都小寫。
Camel規範—第1個字元不大寫,但目標名中的每個單詞的第1個字母大寫,比如,invoiceNumber。其他的所有字元都小寫。
可是,採用字元大小寫區分元素可能在對大小寫不敏感的語言中引發問題。比方說,由於語言區分大小寫,所以你可以私有變數employee,接著它所具有的公共屬性Employee則可以被呼叫者所用。這些操作是完全合法的。但是,對來說就會產生錯誤,因為VB是不區分字母大小寫的,以上兩種元素在VB看來都是一回事。假如你在混合語言環境下工作,你只能指定某些規則要求開發人員合理利用多種語言閱讀其他人開發的程式碼。


命名標準
假設我們採用了以上的大小寫標準,現在就讓我們瞭解一些通用程式元素的簡單命名建議。


某些類設計為模擬真實世界的,就這些類來說,所選用的名字就應該反映真實世界的物件、具有單數名詞的格式,比方Employee、 Invoice或者Timecard等。對內部類而言可以採用Pascal規範令結果類具有單數形式的名字,比如ThreadPool或者CustomColor等。類應當是單數的,這樣它們的複數形式就可以代表同類的集合名,比如Employees陣列等。

類的成員
採用C#以及其他大小寫敏感程式語言的開發人員應當採用camel規範命名類成員的名字。這樣做可以讓開發者更易於區分內部變數的名字(name)和公共屬性的名字(Name)。許多VB開發人員更喜歡採用匈牙利命名法為類成員起名,也就是在名字前面加上字首表示變數的型別,比如sName就指的是string型別的Name變數。我認為,在使用VS這樣高階的開發環境下這樣做是不必要的,因為在這種情況下系統滑鼠停留在變數之上即可可自動顯示變數的型別。我個人喜歡在類成員名前加上字首:小寫的字母m。這樣內部變數就儲存了足夠的內部類資訊:內部變數mName就正好代表了公共屬性Name。

方法
方法應該用Pascal規範命名,同時用合理的方式說明他們的實施行為。比方說,給新增僱員的方法可以命名為AddEmployee,而列印發票的方法則不妨命名為PrintInvoice。假如方法返回的是布林值,那麼方法名應該以動詞開頭以便用在if語句的時候其含義更明顯。比如說,假如你有一個方法的功能是確定某位僱員是否符合公司401k計劃的要求,那麼你可以在If語句中呼叫IsEligible401k方法:If IsEligible401k then…

方法引數、返回值和變數
所有的方法引數、返回值和變數都應該採用Pascal規範命名,同方法名一樣也應該能反映引數或者變數所代表的含義。這一點對引數方法而言特別重要,因為你在呼叫方法的時候智慧感知(lisense)會返回引數名和引數型別。所有采用方法的開發人員都應該使用描述性的名字和型別,便於相互理解其含義。


控制元件命名是開發領域一個經常引發爭議的問題。雖然大多數人贊同不應該使用控制元件的預設名稱,比如TextBox1或者Label1等等,但是,他們還反對按照變數的方式命名控制元件或者採用字首表示控制元件的型別。我比較喜歡採用標準的三字母字首命名窗體中控制元件的名字。比如說,儲存姓氏和名字的文字框控制元件就不妨分別命名為txtLastName和txtFirstName。處理窗體資料的命令按鈕則可以命名為cmdSubmit或者cmdCancel。其實,只要你能保證控制元件命名的一致性而且標準易於理解即可。

註釋
註釋程式碼對所有開發人員來說都是必要的。為了教授正確的註釋技術,我就經常在自己的演示程式中新增註釋程式碼。同時,為了簡化註釋過程,我建議開發人員首先編寫註釋說明他們想編寫的程式。我首先會寫註釋說明程式中的過程、類或者其他程式要素,但對其具體工作原理不做闡述。然後我會編寫一系列的註釋程式碼描述過程的每一主要步驟或者類的元素。在編寫了定義類或者說明過程的程式碼之後,我對各個外部變數、控制元件、開啟的乃至其他過程所訪問的元素文件化,對輸入引數和返回值做簡要說明。

如果你在使用C#開發程式,那麼VS.NET環境已具有內建的工具幫助你把內部C# 註釋轉換為外部HTML文件。你可以在自己的文件中加上特殊的處理指示符而改變外部文件的表示方式。有關這方面的更多資訊可以參考VS.NET內部幫助檔案: ms-help://MS.VSCC/MS.MSDNVS/csref/html/vcoriDocumentation.htm.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章