iT邦幫忙

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

Framework 設計原則系列 第 5 篇

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

  • 分享至 

  • xImage
  •  

本文重點

  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"
    並且傳入兩個參數名稱為 sender 與 e

    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) }}
直播中

尚未有邦友留言

立即登入留言