也可以說是廢話
為了達到一致的程式風格
命名規則是一件重要又基本的事
也是最容易達成卻最容易忽略的事
本篇先介紹命名規則一些基本要遵循的內容
再分類別各自介紹特別需要注意的東西
今天是Type的部份,包括Namespace, Class, Interface, Exception,Enum
明天則是Member的部份,Fields, Methods, Properties, Parameters
好的,本文開始吧
Do Not 使用匈牙利命名法
不要使用字首帶型態的匈牙利命名法,像是int iSize
避免日後型態改變命名也要跟著改
避免使用特殊符號,例如 "_" or "-"
注意文字的組合順序
容易閱讀的方式組合
Do HorizontalAlignemt
Do Not AlignemtHorizontal這點對英文程度不太好的我似乎有點困難
開發延伸版API時,使用相近的名稱
ex: AppDomain & AppDomainSetup
基本上我習慣前面一樣,後面加上可以識別的文字。這樣他們會排在一起比較好找
開發64bit版本時,再後面加上64
ex: PeakWorkingSet & PeakWorkingSet64
但是32-bit後面不要加32
因為32-bit版本程式能在32-bit與64-bit上運行,所以不用特別加上32
但是64-bit版本程式只能在64-bit運行
Do Not 使用程式保留字
就算不是開發語言的保留字,是其他語言的保留字也不要用
各家語言的形態保留字如下
https://msdn.microsoft.com/en-us/library/ms229045(v=vs.110).aspx#Anchor_2
避免使用縮寫。除了大家知道的常用字眼,避免使用縮寫
常用字包括IO, Html, Xml這些
複合字也有些不成文的使用規範如下
像是不要用ID,要用Id or id
不要用LogOut,要用LogOff or logOff
更多規範請參考下列網址
https://msdn.microsoft.com/en-us/library/ms229043(v=vs.110).aspx#Anchor_1
接著來針對不同Type聊聊各自需要注意的Naming Guildeline吧
PascalCasing
階層順序<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
第一層為公司名稱,避免其他公司開發類似的產品造成衝突
第二層為產品或使用的技術
原則上使用PascalCasing,但如果品牌名稱有特殊大小寫。就照品牌名稱
不要 使用部門或組織名稱當Namespace
因為這是一個不穩定的名稱,畢竟有些部門生命週期很短。you know
Namespace名稱不要跟Type的名稱一樣
開發不同版本的功能時,不要在Namespace加上技術名稱
ex: Do Not Microsoft.VisualBasic
PascalCasing
使用"I"開頭
使用形容詞或名詞
PascalCasing
使用名詞組成
以下是繼承或使用一些常用的class要注意的地方
像是Stream之類的,請參考連結
PascalCasing
不要在名稱後面加上 "Enum" or "Flag"
裡面的Member不要加上 Enum 的名稱當prefix
複數詞的enum請使用flags enum (這個我沒用過,也許之後會補充說明)
[Flags]
public enum CosoleModifiers{
Alt,
Control,
Shift
}
PascalCasing
字尾加上"Exception"
關於今天的內容,大致上都是我在MSDN上預習過的
有興趣的可以參考 https://msdn.microsoft.com/en-us/library/ms229002(v=vs.110).aspx
除了鐵人文章之外,我也將這些內容整理成我的gitbook
以便日後參考應用
這個部分在我買書之前就已經在MSDN上先看過了
雖然大部分的內容都差不多,但書上多了一些解釋
還有一些作者群的經驗談
像這塊下途中灰底的部份就是敘述他們當初如何決定Naming style的小故事
因為12/4要去爬山,怕忘了po。只好在半夜搶先送出