淺析.NET開發過程中命名的數量和人稱

作者: Anders Cui  來源: 博客園  發布時間: 2011-02-10 17:17  閱讀: 1466 次  推薦: 1   原文鏈接   [收藏]  
摘要:今天我們將介紹的是.NET開發過程中命名的數量和人稱,我們都知道命名的重要性,特別的情況是動詞的人稱和名詞的數量。

  我們都明白命名的重要性,如果對命名不斷地關注,就需要考慮命名中的動詞和名詞,特別的情況是動詞的人稱和名詞的數量。

  在.NET Framework的Guideline中,有專門一章討論了命名規范,包括大小寫、單詞的選擇等,卻沒有涉及到人稱和數量,下面來討論一下這兩方面的內容。

  名詞的數量

  首先來看數量。名詞的單數和復數在語義上有著明顯的不同,為了提高可讀性,數量需要認真地考慮。比如:

  • 屬性(Property):System.Collections.Generic.DictionaryTKey, TValue中的Keys和Count是好的例子。字段與此類似;
  • 方法名中的名詞:在JS中我們熟悉的getElementById和getElementsByTagName;
  • 局部變量:與屬性相比,我們更可能遭遇的是局部變量。比如,用變量來表示一個人的名字,可以用string name; 如果是多個人的名字,則可以用Liststring names。

  一般地,單數表達的語義是?(0或1);復數表達的語義是*(0、1或多個)。關于名詞的數量很容易理解,相關的規則也容易遵循。

  動詞的人稱

  下面再來考慮動詞的人稱。在需要考慮命名的對象中,包括命名空間、類型、各種類型成員,只有方法是動詞,語義上表示一個行為。關于它的人稱,來看一個.NET Framework中的例子。在  System.Collections.Generic.StackT中,有一個Contains(T item)方法,對于這樣的代碼:

if (theStack.Contains(1))
{
    // Do something.
}

  讀起來像是:if the stack contains 1,比較通順。是不是所有方法都要這樣命名呢?沒有。另兩個方法Clear()和Push(T item)就不是如此,這個地方很讓人困惑。先寫成代碼看看:

theStack.Push(3);
theStack.Clear();

  嘗試像上面那樣作為一個句子來讀:the stack push 3; the stack clear,語法上不對,看起來也應該是第三人稱。這里我也不確定為何如此,只能嘗試來解釋下。考察多個集合類型和其它類型后發現,所有使用第三人稱的地方都是謂詞函數,除了上面的Contains(T item),還有Directory.Exists(string path),不知道這是不是其中的命名規則呢?

  還要考慮注釋

  一定程度上,注釋也算是一種代碼。一種是XML文檔注釋,在.NET Framework中,不管是對于類型還是類型成員,都使用了第三人稱,這一點我們也可以遵循。其它的普通注釋應該也可以遵循這個規則。

1
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()