延續昨天命名規則的話題
今天講Member的命名注意事項
Method代表一個動作,以下範例中的CompareTo、Spilt即是Method
可能會有一些輸入輸出,然後完成一個工作
public class String{
public int CompareTo(...){...};
public string[] Spilt(...){...};
}
PascalCasing
使用動詞
Class跟Method應該是我們最常寫到的部分
上一篇文章說Class用名詞
Interface用形容詞
他們裡面的Method通常都是代表某種動作
所以Method的命名多數使用動詞
public class String{
public int CompareTo(...);
public string[] Spilt(...);
}
Properties用來表示某種資料,使用get取出資料,set設定資料內容
如以下範例中的Length
public class String{
public int Length { get; };
}
PascalCasing
使用名詞或形容詞
設定完一個Property後,不要再多一個Get開頭的方法來取得值
如果取得的value有特殊邏輯的話
也許要考慮使用Method而不是Property
這點在後續的文章會提到
複數型態不要在後面加List or Collection
直接用 Items 就好
不要用 ItemCoCollection
Boolean Properties 使用肯定句,必要時可以在前面加上 Is or Can or Has
並非所有的Boolean Properties都加上Is/Can/Has的prefix
有時候加上去反而太冗長,以下面為例
✓ CanRead
X Readable
原因 : CanRead 的可讀性比 Readable 高
✓ Enabled
X IsEnabled
原因 : Enabled已經能代表啟用中,IsEnabled太囉嗦
這又是考驗英文的一部分
以下規則套用的是static public 跟 protected的Fields
internal 與 private 的Fields不適用,這個也是後續文章會補充說明
如以下範例中的Empty
public class String{
public static readonly string Empty = "";
}
傳入Method的參數,是唯一使用CamelCasing
如下列範例中的value, startIndex 與count
public class String{
public bool Contains(string value);
public string Remove(int startIndex, int count);
}
避免跟其他物件名稱衝突
Events(事件)表示一個正在發生,或已經發生的動作
算是一種Method,所以一樣使用動詞
但是不要在前面加上 "After" or "Before" 表示動作狀態
PascalCasing
不要在前面加上 "After" or "Before" 表示動作狀態
Event handlers的方法在後面加上 "EventHandler"
並且傳入兩個參數名稱為 sender 與 e
public delegate void ClickedEventHandler(Object sender, ClickedEventArgs e);
sender 為呼叫這個事件的物件
傳入EventHandler的物件名稱,後面加上 "EventArgs"
publilc class ClickedEventArgs : EventArgs
至於甚麼是Event handlers,一樣後面文章會做說明
這篇文章欠了很多東西都在Ch4. Types Design Guildeline
請靜候我讀完Ch4之後再回來補充吧
話說我妹一直要我把這個小故事寫在鐵人賽
與程式甚麼的都無關,沒興趣的可以直接關掉了
好吧,故事是這樣的
本魯妹是一個物理治療師
本來他也要寫鐵人賽的,但因為沒有衣服就不寫了
不然應該會多一篇以工程師為主如何避免各種職業病的小技巧
像是如何預防下背痛之類的吧
某天他在幫病人治療時
透過對講機跟櫃檯正妹下達指令『幫我印一下XXX』
正妹回覆『印表機壞了』
魯妹一邊治療病人一邊mermer『印表機壞了』
病人大驚!!!『我的硬表肌壞了嗎???!!!!』
魯妹:『沒有這條肌肉拉XD』