建議127:用形容詞組給接口命名

建議127:用形容詞組給接口命名

接口規範的是“Can do”,也就是說,它規範的是類型可以具有哪些行爲。所以,接口的命名應該是一個形容詞,如:

IDisposable表示可以被釋放

IEnumerable表示類型含有Items,可以被迭代。

正是因爲接口表示的是類型的行爲,所以從語義上可以讓類型繼承多個接口,如:

複製代碼
    class SampleClass : IDisposable, IEnumerable<SampleClass>
    {
        //省略
        #region 實現IDisposable
        public void Dispose()
        {
            throw new NotImplementedException();
        }
        #endregion

        #region 實現IEnumerable
        public IEnumerator<SampleClass> GetEnumerator()
        {
            throw new NotImplementedException();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            throw new NotImplementedException();
        }
        #endregion
    }
複製代碼

 

以上代碼看起來覺得符合語法,又符合語義。如果我們將接口命名爲IDisposal,這給人造成的誤解是:該類型是一個類,而不是接口,雖然我們在前面加了前綴I,但仍然感覺這是符合語義的。

然而,FCL中也有一些違反此規定的例外,比如IEnumerator接口。但是,這種情況相對來說還是比較少的,在大多數情況下,我們需要始終考慮用形容詞來爲接口命名。

 

轉自:《編寫高質量代碼改善C#程序的157個建議》陸敏技

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章