iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 5
0
自我挑戰組

Framework 設計原則系列 第 5

命名規則(2) - Fields, Methods, Properties, Parameters, Events

本文重點

  1. Methods 命名規則
  2. Properties 命名規則
  3. Fields 命名規則
  4. Parameters 命名規則
  5. Events 命名規則

延續昨天命名規則的話題

今天講Member的命名注意事項

Methods

Method代表一個動作,以下範例中的CompareTo、Spilt即是Method

可能會有一些輸入輸出,然後完成一個工作

範例

public class String{
    public int CompareTo(...){...};
    public string[] Spilt(...){...};
}

原則

  1. PascalCasing

  2. 使用動詞

Class跟Method應該是我們最常寫到的部分
上一篇文章說Class用名詞
Interface用形容詞
他們裡面的Method通常都是代表某種動作
所以Method的命名多數使用動詞

public class String{
    public int CompareTo(...);
    public string[] Spilt(...);
}

Properties

Properties用來表示某種資料,使用get取出資料,set設定資料內容

如以下範例中的Length

範例

public class String{
    public int Length { get; };
}

原則

  1. PascalCasing

  2. 使用名詞或形容詞

  3. 設定完一個Property後,不要再多一個Get開頭的方法來取得值
    如果取得的value有特殊邏輯的話
    也許要考慮使用Method而不是Property
    這點在後續的文章會提到

  4. 複數型態不要在後面加List or Collection
    直接用 Items 就好
    不要用 ItemCoCollection

  5. Boolean Properties 使用肯定句,必要時可以在前面加上 Is or Can or Has
    並非所有的Boolean Properties都加上Is/Can/Has的prefix
    有時候加上去反而太冗長,以下面為例

✓ CanRead
X Readable
原因 : CanRead 的可讀性比 Readable 高

✓ Enabled
X IsEnabled
原因 : Enabled已經能代表啟用中,IsEnabled太囉嗦

這又是考驗英文的一部分

Fields

以下規則套用的是static public 跟 protected的Fields

internal 與 private 的Fields不適用,這個也是後續文章會補充說明

如以下範例中的Empty

範例

public class String{
    public static readonly string Empty = "";
}

原則

  1. PascalCasing
  2. 使用名詞
  3. 不要有特殊符號。ex "_"

Parameters

傳入Method的參數,是唯一使用CamelCasing

如下列範例中的value, startIndex 與count

範例

public class String{
    public bool Contains(string value);
    public string Remove(int startIndex, int count);
}

原則

  1. CamelCasing

避免跟其他物件名稱衝突

  1. 使用有意義的單字,不要用匈牙利命名法

Events

Events(事件)表示一個正在發生,或已經發生的動作

算是一種Method,所以一樣使用動詞

但是不要在前面加上 "After" or "Before" 表示動作狀態

  1. PascalCasing

  2. 不要在前面加上 "After" or "Before" 表示動作狀態

  3. Event handlers的方法在後面加上 "EventHandler"
    並且傳入兩個參數名稱為 sendere

    public delegate void ClickedEventHandler(Object sender, ClickedEventArgs e);
    

    sender 為呼叫這個事件的物件

  4. 傳入EventHandler的物件名稱,後面加上 "EventArgs"

    publilc class ClickedEventArgs : EventArgs
    

至於甚麼是Event handlers,一樣後面文章會做說明

這篇文章欠了很多東西都在Ch4. Types Design Guildeline

請靜候我讀完Ch4之後再回來補充吧


拉低賽

話說我妹一直要我把這個小故事寫在鐵人賽

與程式甚麼的都無關,沒興趣的可以直接關掉了

好吧,故事是這樣的

本魯妹是一個物理治療師

本來他也要寫鐵人賽的,但因為沒有衣服就不寫了

不然應該會多一篇以工程師為主如何避免各種職業病的小技巧

像是如何預防下背痛之類的吧

某天他在幫病人治療時

透過對講機跟櫃檯正妹下達指令『幫我印一下XXX』

正妹回覆『印表機壞了』

魯妹一邊治療病人一邊mermer『印表機壞了』

病人大驚!!!『我的硬表肌壞了嗎???!!!!』

魯妹:『沒有這條肌肉拉XD』


上一篇
命名規則(1) - Namespace, Class, Struts, Interface, Exception,Enum
下一篇
Types 設計原則(1) - 開始規劃Namespace
系列文
Framework 設計原則30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言