一.命名规范

1.考虑在命名空间中使用复数

  System.AllCollections

  System.TheCollection

2.用名词和名词组给类型命名

  ScoreManager

  UserController

3.用形容词给接口命名

  接口的规范是“Can Do”,也就是说它规范的是类型可以具有哪些行为。所以接口的命名应该是一个形容词组,前面增加I.

  IDisposable

  IEnumerable

4.考虑让子类的名字以基类名字作为后缀

  class MyException:Exception {}

5.用PascalCasing命名公开元素

  开放给调用者的属性,字段,方法都应该采用PascalCasing命名方式。

6.用camelCasing命名私有字段和局部变量

  private string firstName;

7.委托和事件类型应添加上级后缀

委托按照委托类型的作用分为以Delegate结尾和CallBack结尾。如果委托用于回调性质,则shiyongCallBack结尾。

8.事件和委托变量使用动词或形容词短语命名

public event RutedEventHandler Click;

public event SizeChangedEventHandler SizeChanged;

二.代码整洁

代码整洁的要求之一就是减少代码。

1.使用默认的访问修饰符

   既可以减少代码的数量,还有助于我们熟悉代码的默认行为。

2.不知道该不该用大括号的时,就用

  如if语句下只有一行语句,要不要用大括号。一个括号不会增加多少代码,但是却让代码看上去增加了一致性。

3.只对外公布必要的操作

4.使用表驱动法来避免过长的if或switch分支

5.最少甚至不要注释

6.若抛出异常,则必须注释

三.规范开发行为

1.不要过度设计,在敏截中体会重构的乐趣

C# 《编写高质量代码改善建议》整理&笔记 --(六)编码规范及习惯的更多相关文章

  1. C# 《编写高质量代码改善建议》整理&笔记 --(一)基本语言篇

     题记:这是自己的观后感,工作两年了,本来打算好好学习设计模式,或者作为客户端深入了解GPU编程的,但是突然发现还有这么一本书. <编写高质量代码改善建议>,感觉这正是自己需要的. 我是做 ...

  2. C# 《编写高质量代码改善建议》整理&笔记 --(五)成员设计

    1.可以字段应该重构为属性 2.谨慎将数组或集合作为属性 数组和集合作为属性存在会引起这样的一个分歧:如果属性是只读的,我们通常会认为他是不可改变的.但是如果将只读属性应用于数组和集合,而元素的内容和 ...

  3. C# 《编写高质量代码改善建议》整理&笔记 --(三)泛型&委托&事件

    1.泛型 基于泛型,我们可以将类型参数化,以便更大范围地进行代码复用.同时,它减少了泛型类及泛型方法中的转型, 确保类型安全. 1)总是优先考虑泛型 优点:可重用性,类型安全,高效率. 2)避免在泛型 ...

  4. C# 《编写高质量代码改善建议》整理&笔记 --(五)类型设计

    1.区分接口和抽象类的应用场合 区别: ①接口支持多继承,抽象类则不能. ②接口可以包含方法,属性,索引器,事件的签名,但不能有实现,抽象类则可以. ③接口在增加新方法后,所有的继承者都必须重构,否则 ...

  5. C# 《编写高质量代码改善建议》整理&笔记 --(四)资源管理&序列化

    1.显示释放资源需继承接口IDisposable 什么是资源:C#中每一个类型都代表一种资源,而资源又分为以下两类. 托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象. 非托管资源 ...

  6. 编写高质量代码改善C#程序的157个建议——建议149:使用表驱动法避免过长的if和switch分支

    建议149:使用表驱动法避免过长的if和switch分支 随着代码变得复杂,我们很容易被过长的if和switch分支困扰. 一个类枚举类型Week如下: enum Week { Monday, Tue ...

  7. 编写高质量代码改善C#程序的157个建议——建议1:正确操作字符串

    最近拜读了陆敏技老师的<编写高质量代码改善C#程序的157个建议>,感觉不错,决定把笔记整理一遍. 建议1: 正确操作字符串 字符串应该是所有编程语言中使用最频繁的一种基础数据类型.如果使 ...

  8. 博友的 编写高质量代码 改善java程序的151个建议

    编写高质量代码 改善java程序的151个建议 http://www.cnblogs.com/selene/category/876189.html

  9. 编写高质量代码--改善python程序的建议(六)

    原文发表在我的博客主页,转载请注明出处! 建议二十八:区别对待可变对象和不可变对象 python中一切皆对象,每一个对象都有一个唯一的标识符(id()).类型(type())以及值,对象根据其值能否修 ...

随机推荐

  1. EF CodeFirst 数据库初始化策略

    最近用EF做了几个小东西,了解简单使用后有了深入研究的兴趣,所以想系统的研究一下EF CodeFist的几个要点.下面简单列一下目录 1.1 目录 数据库初始化策略和数据迁移Migration的简单介 ...

  2. The Beam Model:Stream &amp; Tables翻译(上)

    本文由  网易云发布. 作者:周思华 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 本文尝试描述Beam模型和Stream & Table理论间的关系(前者描述于数据流模型论文.the ...

  3. 完全关闭Hyper-v的方法

    众所周知Hyper-v和vmware有冲突,开启Hyper-v功能vmware就不能使用,但即使关闭了也是如此,这是因为功能没有被完全关闭,这里整理下方法,我自己在两台机子亲测有效. win+x,a, ...

  4. Scrapy爬虫框架第一讲(Linux环境)

    1.What is Scrapy? 答:Scrapy是一个使用python语言(基于Twistec框架)编写的开源网络爬虫框架,其结构清晰.模块之间的耦合程度低,具有较强的扩张性,能满足各种需求.(前 ...

  5. Hello Django

    首先安装Django: 1.cmd界面,输入"pip3 install django" 2.输入"django-admin help",如下图表示安装成功   ...

  6. springboot整合shiro后报java.lang.ClassCastExcepting异常

    最近搭一个springboot的框架,整合了shiro和redis,由于平常习惯用热部署,所以自然的引入了热部署的包,但是引入后报如下错误: 没错,这个问题害我搞了一天,后来删除热部署,项目正常的跑飞 ...

  7. Flask开发微电影网站(一)

    1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定 ...

  8. 通过VirtualBox安装Linux系统(CentOS7)

    本文目的:创建虚拟系统.在windows系统中通过虚拟工具VirtualBox创建一个虚拟系统CentOS. 备注:(1)版本如下:VirtualBox-5.2.12-122591-Win 和Cent ...

  9. 你不知道的JavaScript--Item29 DOM基础详解

    看完JavaScript高级程序设计,整理了一下里面的DOM这一块的知识点,比较多,比较碎!DOM在整个页面的地位如图: DOM(文档对象模型)是针对HTML 和XML 文档的一个API(应用程序编程 ...

  10. 解决openfire中发送某些特殊字符会断开xmpp连接的问题

    在openfire中,如果发送某些特殊的字符(例如一些表情符合),会断开xmpp的连接,经查,是由以下的代码问题引起的: src\java\org\jivesoftware\openfire\net\ ...