這本書雖然是講述.net框架設(shè)計的一些規(guī)范,不過仍然有一些通用的設(shè)計準(zhǔn)則可以參考
命名規(guī)范:
這些只有在用于公開暴露給外界的API時才是必需的
標(biāo)識符大小寫規(guī)則:
1.要把PascalCasing用于由多個單詞構(gòu)成的名字空間,類型以及成員的名字
2.要把camelCasing用于參數(shù)的名字
3.不要把閉合形式的復(fù)合詞中每個單詞的首字母大寫,比如 callback, endpoint 等等,可以查閱英語詞典來確定復(fù)合詞是不是閉合的
4.不要使用匈牙利命名法。原因有幾點,一是發(fā)明它的ms公司都已經(jīng)明確要求在新的庫在不要使用這種命名法,二是變量名前加類型標(biāo)識符是個很不好的習(xí)慣,在開發(fā)過程中有可能會隨時修改這些變量的類型定義,三是新的編輯器中不需要用m_前綴來確定其類型,不過對于內(nèi)部實現(xiàn)的變量來說,用一個前綴也許會讓變量的查找更方便,比如用一個_前綴
5.不要使用未被廣泛接受的首字母縮寫詞,如何確定某個縮寫詞是否眾所周知有個好方法,到google上搜索一下,如果前幾條都是你所期望的內(nèi)容,那么它就是眾所周知的了
關(guān)于命名:
1.要用名詞或名詞短語來給類和結(jié)構(gòu)體命名,使用PascalCasing的大小寫風(fēng)格,類名字不要加 C,但是接口前需要加 I,這是個特例
2.用形容詞短語來給接口命名,在少數(shù)情況下也可以使用名詞或名詞短語
3.考慮在派生類的末尾使用基類的名字,比如 class FileStream : public Stream
4.用動詞或動詞短語來命名方法,比如 int CompareTo();
5.要用肯定性的短語(CanSeek而不是CantSeek)來命名布爾屬性,可以加Is,Can,Has等前綴,要確保使用時的測試語句讀起來通順,比如
if (collection.Contains(item)) 就比 if (collection.IsContained(item)) 要通順得多
此外,要優(yōu)先選擇主動語態(tài)而不是被動語態(tài),比如
if (stream.CanSeek()) 就比 if (steam.IsSeekable()) 要強得多
6.要用現(xiàn)在時和過去時來賦予事件名以之前和之后的概念,不要用Before或After這樣的前后綴,比如 Closing, Closed而不是AfterClose
使用規(guī)范:
1.優(yōu)先使用集合,避免使用數(shù)組
2.考慮使用不規(guī)則數(shù)組,而不要使用多維數(shù)組,也就是優(yōu)先使用int [][] jagedArray這樣的數(shù)組,避免使用 int [,] multiDimArray這樣的類型
3.要用最泛的類型來作為參數(shù)類型,大多數(shù)以集合為參數(shù)的成員都使用IEnumerable<T> 接口