编码规范对于程序员而言尤为重要,有以下几个原因:

1.一个项目的生命周期中,80%的花费在于维护;

2.几乎没有任何一个项目,在其整个生命周期中,均由最初的开发人员来维护;

3.命名规范可以改善项目的可读性,可以让程序员尽快而彻底地理解新的代码;

4.如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,比如你已构建的其它任何产 品。 为了执行规范,每个软件开发人员必须一致遵守编码规范。

常见的命名规则我们都知道:

Pascal 规则:

每个单词开头的字母大写(如 TestCounter).

Camel 规则:

除了第一个单词外的其他单词的开头字母大写. 如. testCounter.

Upper 规则:

仅用于一两个字符长的常量的缩写命名,超过三个字符长度应该应用Pascal规则

例如:

public class Math
{
public const PI = ...
public const E = ...
public const FeigenBaumNumber = ...
}

针对C#开发者,整理了15条命名规范!

1.类命名规则

  • 类名应该为名词及名词短语,尽可能使用完整的词.

  • 使用Pascal规则

  • 不要使用类前缀 - 不要使用下划线字符 (_)。

  • 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适当的。

  • 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。

2.接口命名规则

  • 接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (Example IComponent or IEnumberable)

  • 使用Pascal规则

  • 使用字符I为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)

复制代码代码如下:

interface ICompare
{
int Compare();
}

3.枚举命名规则

  • 对于 Enum 类型和值名称使用 Pascal 大小写。
  • 少用缩写。
  • 不要在 Enum 类型名称上使用 Enum 后缀。
  • 对大多数 Enum 类型使用单数名称,但是对作为位域的 Enum 类型使用复数名称。
  • 总是将 FlagsAttribute 添加到位域 Enum 类型。

4.变量命名

  • 在简单的循环语句中计数器变量使用 i, j, k, l, m, n
  • 使用 Camel 命名规则

5. 方法命名

  • 使用Pascal规则

  • 对方法名采用一致的动词/宾语或宾语/动词顺序。例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将宾语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。

  • 推荐名称应该为动词或动词短语.例如Save,SaveCustomer,而不要使用CustomerSave

  • 不要在方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook,而可以将方法命名为 Book.Close。

6.属性命名

  • 名称应该为名词及名词短语

  • 使用Pascal规则

  • 对于bool型属性或者变量使用Is(is)作为前缀,不要使用Flag后缀,例如应该使用IsDeleted,而不要使用DeleteFlag

7.集合命名

  • 名称应该为名词及名词短语

  • 使用Pascal规则

  • 名称后面追加“Collection”

8. 事件命名

  • event handlers命名使用 EventHandler 后缀.

  • 两个参数分别使用 sender 及 e

  • 使用Pascal规则

  • 事件参数使用EventArgs 后缀

  • 事件命名使用语法时态反映其激发的状态,例如 Changed,Changing.

  • 考虑使用动词命名. 变量命名

  • 在简单的循环语句中计数器变量使用 i, j, k, l, m, n

  • 使用 Camel 命名规则

9.自定义的属性以Attribute结尾

代码如下:

public class AuthorAttribute : Attribute
{
}

10.自定义的异常以Exception结尾

复制代码代码如下:

public class AppException : Exception
{
}

11. 在类的顶部声明所有的成员变量,静态变量声明在最前面

// Correct
public class Account
{
public static string BankName;
public static decimal Reserves; public string Number {get; set;}
public DateTime DateOpened {get; set;}
public DateTime DateClosed {get; set;}
public decimal Balance {get; set;} // Constructor
public Account()
{
// ...
}
}

12.不推荐使用匈牙利命名法

不要给成员变量加任何前缀(如、m、s_等等)。如果想要区分局部变量和成员变量,可以使用this关键字。

推荐:C#命名规范12条的更多相关文章

  1. PCL推荐的命名规范(1)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=209 文件命名 所有的文件名单词之间应该用下划线隔开,例 如unordere ...

  2. PCL推荐的命名规范(2)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=210 函数/成员函数命名 函数和类的成员函数的命名应该采用camelCase ...

  3. pyhon推荐的命名规范

    类别 public Internal Modules(模块) low_with_under _low_with_under Packages(包) low_with_under   Classes(类 ...

  4. javaBean命名规范 get / set 后的首字母大写

    javaBean命名规范 Sun 推荐的命名规范 1 ,类名要首字母大写,后面的单词首字母大写 2 ,方法名的第一个单词小写,后面的单词首字母大写 3 ,变量名的第一个单词小写,后面的单词首字母大写 ...

  5. c#命名规范汇总12条

    前言 在刚学习c#的时候,在脑子根本就么有命名规范这个概念,有了一定入门的基础,也很难严格要求自己去规范代码的命名,工作后,发现自己的命名和其他人的命名总会有一些出入,总会闹出一些尴尬的笑话,这里汇总 ...

  6. JavaScript发展史,与JScript差别,引入方式,数据类型,命名规范,命名推荐,解决命名冲突

    文件夹: 1.JavaScript发展史 2.JavaScript与JScript差别 3.JavaScript引入方式 4.JavaScript基本数据类型及布尔值 5.JavaScript命名规范 ...

  7. C#开发命名规范

    学习C#之初,始终不知道怎么命名比较好,很多时候无从命名,终于有一天我整理了一份命名规范文档,自此我就是按照这个命名规范书写代码,整洁度无可言表,拙劣之处请大家斧正,愚某虚心接受,如有雷同,不胜荣幸 ...

  8. 我自己总结的C#开发命名规范整理了一份

    我自己总结的C#开发命名规范整理了一份 标签: 开发规范文档标准语言 2014-06-27 22:58 3165人阅读 评论(1) 收藏 举报  分类: C#(39)  版权声明:本文为博主原创文章, ...

  9. C#开发命名规范总结整理

    1.  命名规范a) 类[规则1-1]使用Pascal规则命名类名,即首字母要大写.eg:Class Test{    ...}[规则1-2]使用能够反映类功能的名词或名词短语命名类.[规则1-3]不 ...

随机推荐

  1. Lua OpenResty容器化(考古历程)

    原文地址:Lua OpenResty容器化(考古历程) 背景 公司有几个"远古时期"的项目,一直都相对较为稳定,但是项目每天总会在一些时段,请求每分钟QPS到达峰值800K左右,导 ...

  2. SOAP与REST API的区别

    之前一直想写些RESTful相关的文章,却一直未付诸行动.直到最近接手一个新的项目,对这块重新温习,乘此机会写些相关帖子.欢迎大家评论留言,如有错漏之处,也望各位大佬不令赐教. 话不多说,干活顶上. ...

  3. Spring Cloud Alibaba(2)---RestTemplate微服务项目

    RestTemplate微服务项目 前言 因为要运用 Spring Cloud Alibaba 开源组件到分布式项目中,所以这里先搭建一个不通过 Spring Cloud只通过 RestTemplat ...

  4. day16.网络编程1

    1 osi七层,tcp/ip 5层 1 cs架构和bs架构 2 互联网 3 osi七层.5层(5层名字记住:重点) -物理层 -网线,光纤 -数据链路层 -网卡 -网络层 -路由器 -传输层(运输层) ...

  5. JDBC_10_使用Statement实现升序和降序

    使用Statement数据库操作对象实现升序和降序 Statement可以使用在需要SQL语句拼接的情况下,因为在这样的情况下如果使用PreparedStatement就会给需要拼接的某个SQL关键字 ...

  6. Oracle中left join、right join、full join应用场景

    一.提出问题:三个表分别存不同属性,一条sql查询各个公司的不同的属性 (1) 提供的三个表,相同的维度[company] (2) 需要的结果: 二.问题解析:可通过先查出所有公司再左连接三个表,或者 ...

  7. commons-pool2 池化技术探究

    一.前言 我们经常会接触各种池化的技术或者概念,包括对象池.连接池.线程池等,池化技术最大的好处就是实现对象的重复利用,尤其是创建和使用大对象或者宝贵资源(HTTP连接对象,MySQL连接对象)等方面 ...

  8. 按照自己的思路去研究Spring AOP源码【1】

    目录 一个例子 Spring AOP 原理 从@EnableAspectJAutoProxy注解入手 什么时候会创建代理对象? 方法执行时怎么实现拦截的? 总结 问题 参考 一个例子 // 定义一个切 ...

  9. 996. Number of Squareful Arrays

    Given an array A of non-negative integers, the array is squareful if for every pair of adjacent elem ...

  10. Mybatis的简单增删改查

    刚开始学习Mybatis可以先看下官方文档,MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集.MyBat ...