Chinaunix首页 | 论坛 | 博客
  • 博客访问: 456857
  • 博文数量: 155
  • 博客积分: 786
  • 博客等级: 军士长
  • 技术积分: 1561
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-01 23:37
个人简介

在路上

文章分类

全部博文(155)

文章存档

2016年(2)

2015年(36)

2014年(45)

2013年(34)

2012年(38)

我的朋友

分类: C#/.net

2015-08-15 20:06:16

命名规范是一个十分重要但有比较有争议的话题,本文主要谈一下我的体会并介绍一种较常用的C#命名规范。

匈牙利命名法

我最早接触到的命名规范是匈牙利命名法,该方法出自微软,基本上是一些在你的所有变量前建立一个前缀的规则。这个前缀会说明那个变量的类型。其好处在于,通过它们的前缀,你可以方便地知道两个变量是否兼容。这种方法非常流行,在目前的CC++开发中还被广泛的使用。

匈牙利命名法的不足

匈牙利命名法的最大的不足的地方就是繁琐,随着计算机的速度越来越快,IDE已拥有足够的能力,可以开始实时探测变量的类型。因此,当你编程时,IDE能够向你警告类型不兼容的情况(通常普遍使用微软Word自动拼写检查中的红色弯曲下划线)。

匈牙利命名法过分强调类型,在泛型方法中就显得格格不入。另外,很多时候我们关心的只是这个变量所代表的意义而不是它的类型。像C++0xauto关键字(虽然这个关键字在C++98中就存在,但没法用)和C#var关键字也说明了这一点。在小函数或者Lambda表达式这种比较简单的流程的时候,过长的匈牙利变量显得也很不合适。

其实主要的还是程序员懒惰心理作怪,但正是这种懒惰推动了计算机行业的不断发展。就连微软也逐步减少了匈牙利命名法的使用,在其当家语言C#中主要使用的是帕斯卡命名法和骆驼命名法。下面就简单的介绍一下常用的C#命名规范。

C#编程命名规范

类class

Pascal

  

方法function

Pascal

  

接口interface

Pascal

总是以 I 前缀开始,后接Pascal命名

枚举类型enum

Pascal

  

委托delegate

Pascal

  

   

具体如下:

  1. 用camel规则来命名局部变量和方法的参数,用pascal规则来命名方法和类型。
        public class TextBox
        {
            public void DataBind()
            {
            }
        }


    string userName;
    public AddUser(string userId,byte[] password);

  2. 接口的名称加前缀 I.
    interface ICompare
        {
            int Compare();
        }
  3. 自定义的属性以Attribute结尾
    public class AuthorAttribute : Attribute
    {
    }
  4. 自定义的异常以Exception结尾
        public class AppException : Exception
        {
        }
  5. 方法的命名。一般将其命名为动宾短语。
        ShowDialog()
        CreateFile()
        GetPath()
  6. 代码的缩进。要用Tab,而不要用space.
  7. 局部变量的名称要有意义。不要用x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n)。
  8. 所有的成员变量声明在类的顶端,用一个换行把它和方法分开。
  9. 用有意义的名字命名namespace,如:产品名、公司名。
  10. 生成和构建一个长的字符串时,一定要使用StringBuilder,而不用string.
  11. 始终使用"{ }"包含if下的语句,即使只有一条语句。
  12. 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region…#endregion,

需要记住的一点是:编程规范的目的是帮助程序员写出简洁规范易读的程序,但也没必要过分被其所约束。

阅读(391) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~