白云哥

身披半件长工衣,怀揣一颗地主心

 

Framework Design Guidelines读书笔记

这本书虽然是讲述.net框架设计的一些规范,不过仍然有一些通用的设计准则可以参考

 

命名规范:

这些只有在用于公开暴露给外界的API时才是必需的

 

标识符大小写规则:

1.要把PascalCasing用于由多个单词构成的名字空间,类型以及成员的名字

2.要把camelCasing用于参数的名字

3.不要把闭合形式的复合词中每个单词的首字母大写,比如 callback, endpoint 等等,可以查阅英语词典来确定复合词是不是闭合的

4.不要使用匈牙利命名法。原因有几点,一是发明它的ms公司都已经明确要求在新的库在不要使用这种命名法,二是变量名前加类型标识符是个很不好的习惯,在开发过程中有可能会随时修改这些变量的类型定义,三是新的编辑器中不需要用m_前缀来确定其类型,不过对于内部实现的变量来说,用一个前缀也许会让变量的查找更方便,比如用一个_前缀

5.不要使用未被广泛接受的首字母缩写词,如何确定某个缩写词是否众所周知有个好方法,到google上搜索一下,如果前几条都是你所期望的内容,那么它就是众所周知的了

 

关于命名:

1.要用名词或名词短语来给类和结构体命名,使用PascalCasing的大小写风格,类名字不要加 C,但是接口前需要加 I,这是个特例

2.用形容词短语来给接口命名,在少数情况下也可以使用名词或名词短语

3.考虑在派生类的末尾使用基类的名字,比如 class FileStream : public Stream

4.用动词或动词短语来命名方法,比如 int CompareTo();

5.要用肯定性的短语(CanSeek而不是CantSeek)来命名布尔属性,可以加Is,Can,Has等前缀,要确保使用时的测试语句读起来通顺,比如

if (collection.Contains(item)) 就比 if (collection.IsContained(item)) 要通顺得多

此外,要优先选择主动语态而不是被动语态,比如

if (stream.CanSeek()) 就比 if (steam.IsSeekable()) 要强得多

6.要用现在时和过去时来赋予事件名以之前和之后的概念,不要用Before或After这样的前后缀,比如 Closing, Closed而不是AfterClose

 

使用规范:

1.优先使用集合,避免使用数组

2.考虑使用不规则数组,而不要使用多维数组,也就是优先使用int [][] jagedArray这样的数组,避免使用 int [,] multiDimArray这样的类型

3.要用最泛的类型来作为参数类型,大多数以集合为参数的成员都使用IEnumerable<T> 接口

posted on 2010-08-07 00:19 白云哥 阅读(330) 评论(0)  编辑 收藏 引用 所属分类: Others


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(4)

随笔分类

随笔档案

相册

我的链接

搜索

最新评论

阅读排行榜

评论排行榜