命名規範整理

  • 3212
  • 0
  • 2014-07-09

NameSpace 命名

 

//小伙 從 157個完美化C#的建議 這本書(推薦)內整理筆記,並加上 自身方案的命名經驗,整理大部分的命名規範,也會當成以後自身的命名規範。 
 
命名的重要性:
1.命名是要使程式OO的最基礎。
2.好的命名能使程式解少註解,並提升可讀性。因為若是功能有變更那一定要再更改原註解(註解也是要維護的...),若能從命名著手,才是最根本的辦法。
 
 
以下將分為四個部分
 
一.命名空間(NameSpace)命名規範
 
三.類別(Class)命名規範
 
三.屬性(Propertie)及方法(Method)命名規範:
 
四.事件及委派規範
 
 
-------------------------------------------------------------------------------------------------------
一.命名空間(NameSpace)命名規範:
1.物件命名規範:
<Company>.<Component>
或<Company>.<Product>.<Component>
或<Company>.<Product>.<APPName>.<Component> 以此類推
 
以微軟內建的API命名來舉例:
例:Microsoft.Build.Engine
例:Microsoft.Office.Interop.Excel
 
以下為錯誤示範
例:Engine
例:Excel
由於這種意義性的命名將來極可能造成命名重覆及物件上分類的混淆。
 
2.程式集(.exe)命名
<APPName>或< Product >
例:Word(將會產出Word.exe)
例:MSN(將會產出MSN.exe)
 
在程式集的命名上不必遵循物件命名的規則。因為程式集主要是調用物件後提供使用者操縱的程式的入口,應該讓使用者一看就了解該程式的目的,並且一個資料夾內不應該出現大量的.exe檔案。
(舉例:要進入餐廳門口將會看到入口或是出口的字樣,而並非XX餐廳入口。)
 
以下為錯誤示範:
例:Microsoft.Office.Word
 
試想一下,上舉例之命名空間將會產出Microsoft.Office.Word.exe,雖然看得懂但也顯得冗長及無胃。
 
 
3.命名空間內使用複數:
<Company>.<Components>…
(參考上列的物件命名規則,並在Component命名時後端加上複數文字)
例:System.Collections(這個類包含了List<T>、Dictionary<T,T>)
 
什麼情況會使用複數來命名,由上例可得知System.Collections內物件有相似的操作意義,這些物件(List<T>、Dictionary<T,T>)都是為了收納集合。
以下為錯誤範例:
例: System.TheCollection
例: System.AllCollections
以上將造成意義不清或是太繁瑣。
 
 
-------------------------------------------------------------------------------------------------------
二.類別(Class)命名規範:
1.類別命名規則,避免用FCL的型別名稱命名自己的型別
註:Framework Class Library(.Net基礎物件)
 
例如:
自己創造一個類別叫做List,雖然是可以使用但是在乍看之下或分不清楚此類別到底是由哪個物件所提供。(因為FCL內已包含List<T>的類別)
 
2.類別命名,以名詞或名片詞(點餐人員Order Processor)
註: 名片詞:例(點餐人員OrderProcessor,簡單的說就是職稱,或是V動詞+N名詞 或adj形容詞+N名詞)
因為類別是一個分類,真正動作的是類別內的方法,故不應該用動詞或形容詞。
 
3.用形容詞組給介面(Interface)命名,以I+形容詞(I+具有的行為)
 因為Interface是一種規範,也可看成一種規則,他告訴所要取得資訊的使用者能提供那些行為及屬性;也規範了要傳參的使用者,只需將規則內的條件滿足即可執行。
 
4.讓衍生類別的名稱以基底類別名稱為尾碼(名詞或名片詞+基類名稱)
例:
由於需要自動錯誤Exception,故創造一個EmpException類別並繼承Exception類別。
目的是為了能更直接地看出此類別所繼承的類別為何。
 
5.泛型別要以T作為首碼(T+名詞或名片詞)
原因很簡單,泛型的參數若設為Penson看起來就是一般的類別,會造成混淆,所以就以TPenson來表示即可。
 
 
-------------------------------------------------------------------------------------------------------
三.屬性(Propertie)及方法(Method)命名規範:
1.屬性及方法命名規範
 
 
2.bool命名為Is(Can、Has)+V或是肯定句
例:IsEnable
 
 
-------------------------------------------------------------------------------------------------------
四.事件及委派規範
1.  委派(delegate)及事件(event)命名
要在變數時給予尾字讓使用者能清楚了解使用動機。
2.事件處理器命名(處理事件(或是WPF的Command)的方法)
微軟預設命名為UIName_EventName(省略事件名稱最後的尾碼)
例:Button_Click(Object sender,RoutedEventArgs e)
例: ClickCommand(WPF的Command)
 
 
By-藍小伙-歡迎提出建議或是需修改。