原文:http://blog.csdn.net/lfhfut/article/details/5794414

这本书虽然是讲述.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 接口

Framework Design Guidelines读书笔记相关推荐

  1. Head First Design Pattern 读书笔记(4) 工厂模式

    2019独角兽企业重金招聘Python工程师标准>>> Head First Design Pattern 读书笔记(4) Factory Pattern 工厂模式 ##Factor ...

  2. [书籍]重温《Framework Design Guidelines》

    1. 前言 最近重温了<Framework Design Guidelines>. <Framework Design Guidelines>中文名称为<.NET设计规范 ...

  3. 《IDEO,设计改变一切》(Change By Design)- 读书笔记

    一.关于IDEO与设计思维 IDEO是一家世界顶级创意公司,而作者蒂姆布朗是IDEO的CEO.当然,在未阅读本书之前,我都是不知道的,也不会主动去了解IDEO和蒂姆布朗的.那么,我为什么要去读这样一本 ...

  4. 《Framework Design Guidelines 2nd Edition》推荐

    前言 最近看了<FDG 2nd Edition>,也适当做了些笔记,在这里写这篇文章的目的主要有两个,一是对自己学习的一个记录.积累:另外,还可以用这篇总结向一些有需要的朋友推荐这本书. ...

  5. 来自Window Presentation Foundation Program Design的读书笔记 (第四篇 下)

    我们将一个tooltip控件绑定到button上,以便鼠标经过button时,可以显示提示信息, 1: private void ToolTipTest() 2: { 3: Button btn = ...

  6. 来自Window Presentation Foundation Program Design的读书笔记 (第四篇 上)

    本篇讲解Button and Other Controls 在wpf中,控件一词比早期的window from更具有意义,在早期的windows from中,屏幕上的一切都是控件,但是在wpf中这个词 ...

  7. 来自window Presentation Foundation Program Design的读书笔记 第五篇下

    我们来看下一个例子,这个例子将在一个button中放置一个stackpanel,然后在放置多个对象: 1: private void StackInButton() 2: { 3: Button bt ...

  8. 来自window Presentation Foundation Program Design的读书笔记 第五篇 上

    我们将在本章讲解面板Stack和Wrap,首先我们来看下他们的继承结构: 1: UIElement 2: FrameworkElement 3: Panel(abstract) 4: Canvas 5 ...

  9. 初学c#读书笔记(一)--c#和.NET Framework

    开篇废话      Java的读书笔记因为有的没的原因中断了,现在新写的c#读书笔记总结之前的经验准备作出一些改变.      不在以学校课本为主:c#读书笔记是以<c#图解教程>和< ...

最新文章

  1. 公司--下载svg图片
  2. 训练数据集时为何要先加载预训练模型作为初始化,这样做有何好处?
  3. JavaScript单元测试ABC
  4. centos7.2 mysql集群_Centos7.2下安装mysql-group-replication数据库集群
  5. UFLDL 教程学习笔记(三)自编码与稀疏性
  6. java xml出错,Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException...
  7. 手机忽然就安装不了东西,就是下载好apk打开后按不了安装。怎么处理?
  8. redis cluster迁移相关
  9. python整数作为条件_Python基本概念介绍
  10. 非常详细的光纤入户方案书
  11. linux 路由器 限速,Linux服务器限速WonderShaper使用方法 | 陌小九
  12. css3 描两个边,CSS3 / 指定四条边中图像的显示方法 - 汇智网
  13. Mininet系列实验(三):Mininet命令延伸实验扩展
  14. DDD(Domain-Driven Design)领域驱动架构介绍
  15. overleaf / latex 批量添加参考文献
  16. 失业三星期:我寻找第二份编程工作之路
  17. 黑板模式(Blackboard Design Pattern)。
  18. 【MySQL 8.0 OCP 1Z0-908认证考试】题库精讲--第四讲mysql8.0权限安全审计(上)
  19. cad快捷图标中的启动参数
  20. 学习笔记之VOIP网守的功能

热门文章

  1. 禁じられた2人(禁忌恋人)
  2. [Linux] 红米2 安装 postmarketOS(基于 Alpine Linux)及后续玩法
  3. 如何利用QQ营销的方法将用户圈起来?
  4. numpy导出csv取消科学计数法
  5. Hyper-V下Linux鼠标驱动调试和网卡跃点数问题
  6. RabbitMQ SSl安全认证流程
  7. 手机怎么投屏到电脑?手机投屏软件哪个好用
  8. django项目migrations文件要不要提交到代码库
  9. 水桶塑料感打击乐合成器插件-Klevgrand Slammer v1.0.2 WiN-MAC
  10. C/C++文档编辑器