博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#通用编码规范

Posted on 2010-11-03 15:31  gczhao  阅读(261)  评论(0编辑  收藏  举报

本文转自http://blog.csdn.net/usernamegaorn/archive/2007/10/20/1834275.aspx

 

 

基本命名规范

注记:
Pascal 大小写形式:所有单词第一个字母大写,其他字母小写。
Camel 大小写形式:除了第一个单词,所有单词第一个字母大写,其他字母小写。
 
对于在页面中的类,类名使用Pascal大小写形式,当然,这个类名通常情况下与前台页面的文件名是一致的,比如,对于一个页面HelloWorld.aspx,其类名会如下定义:
public class HelloWorld : Page
{
 …
}
 
对于类库中的类,则应按照约定加一定的前缀,通常是小写字母c,比如一个通用类可以如下定义:
public class cHelloWorld
{
 …
}
自然的,相应文件名也是遵循此定义格式,在本例中,为cHelloWorld.cs
类中的方法都使用Pascal大小写形式
public class HelloWorld
{
 void SayHello ( string userName )
 {
  …
 }
}
变量和方法中的参数使用Camel 大小写形式
public class HelloWorld
{
 int totalCount = 0;
 void SayHello ( string userName )
 {
  string fullMessage = "Hello " + userName;
  …
 }
}
常量的定义
常量名通常全部采用单词的大写,单词之间以下划线“ _ ”隔开。
private const bool WEB_DEFAULT_DATA_LINK = true;
 
类的对象实例的命名

可以采用取类的首字母小写的方法,比如:
DataSet ds = new DataSet();
cHelloWorld hw = new cHelloWorld();
 
页面控件的命名

页面控件命名时,最好按照类型加前缀,其命名方式类似Camel 大小写形式,比如:txtUserName,btnSumbit,lblErrorInfo。
 
不要使用匈牙利方法来命名变量

以前,多数程序员喜欢把数据类型作为变量名的前缀而m_作为成员变量的前缀。
例如:
string m_sName;
int iAge;

然而,这种方式在.NET编码规范中是不推荐的。所有变量都用Camel 大小写形式,而不是用数据类型和m_来作前缀。

别使用单个字母的变量象i,n,x 等。使用 index,temp等。当然,用于循环迭代的变量例外,如for循环中的i。
 
尽量不要使用下划线

C#中的下划线会带来不好的代码阅读体验,所以应当限制下划线的使用。唯一采用下划线的规则是常量名的定义。
比如如下代码:
private string ExitDoor()
{
cControl_Exit.Door();
....
}
其中的cControl_Exit.Door,一眼之下难以区分类还是方法,习惯于vb编程的人很容易将cControl看成对象,将Exit.Door看成方法。
 
不要使用关键字或疑似关键字作为变量名

比如class,void,key之类的单词,尽量不要单独用作变量名,但可以与其它单词组合作为变量名。
 
类、方法和变量的命名不要过长,限制在三到四个单词以内。另外,要用有意义的,描述性的词语来命名变量。别用缩写。用name,address,salary等代替nam,addr,sal。
 
接口的命名

和类命名规范相同,唯一区别是  接口在名字前加上“ I ”前缀
例:
interface IDBCommand;
interface IButton;
 
 
代码格式规范

避免使用大文件。
如果一个文件里的代码超过300~400行,必须考虑将代码分开到不同类中。

避免写太长的方法。一个典型的方法代码在1~25行之间。如果一个方法的代码超过25行,应该考虑将其分解为不同的方法。
 
使用Tab缩进使代码产生层次,不允许使用空格缩进。
当前一个值得关注的趋势,就是通过限制Tab制表符缩进的层数,控制代码嵌套的深度。
代码中操作符两端要留出空格
要这样:for ( int i = 0; i < 10; i++ ){}
不要这样:for (int i=0;i<10;i++){}
 
代码注释
好的代码要做到易读(见名知意),就可以尽量少的使用注释,对于必要的注释,要遵循以下格式:

注释文字要和“ // ”空一个格。
要这样:// 注释内容
不要这样://注释内容
 
模块或类文件的注释,采用如下格式:
/// <summary>
/// Module ID:<模块编号,可以引用系统设计中的模块编号>
/// Module Name:<模块名称>
/// Depiction:<对此类的描述,可以引用系统设计中的描述>
/// Author:<作者>
/// Create Date:<模块创建日期,格式:YYYY-MM-DD>
/// </summary>
 
方法的注释加到方法定义的前面,采用如下格式:
/// <summary>
/// depiction:<对该方法的说明>
/// </summary>
/// <param name="<参数名称>"><参数说明></param>
/// <returns>
/// <对方法返回值的说明,该说明必须明确说明返回的值代表什么含义>
/// </returns>
/// Writer:<作者中文名>
/// Create Date:<方法创建日期,格式:YYYY-MM-DD>

当然,以上各项并不是必需的,通常情况下只写<对该方法的说明>就可以了,也可以不写。
方法名需能看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。

一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。
别在程序中使用固定数值,用常量代替。

别用字符串常数,用资源文件。

不要在方法间共享成员变量,如果在几个方法间共享一个成员变量,那就很难知道是哪个方法在什么时候修改了它的值。

必要时使用enum,别用数字或字符串来指示离散值。
要这样:
enum MailType
{
  Html,
  PlainText,
  Attachment
}
void SendMail (string message,MailType mailType)
{
  switch ( mailType )
  {
    case MailType.Html:
    // Do something
    break;
    。。。
  }
}
 
不要这样:
void SendMail (string message, string mailType)
{
  switch ( mailType )
  {
    case "Html":
    // Do something
    break;
    。。。
  }
}
别把成员变量声明为 public或 protected。
都声明为private 而使用 public/protected 的Properties,例如:
class cExample
{
  private string priOwner;
  public string Owner
  {
    get{return this.priOwner;}
  }
}
 
使用#region来分组相关的方法和属性定义,并且方法中,可以使用空行来分组逻辑上相关的代码行。

项目开发规范

不允许随意定义全局变量。如果确实需要定义全局变量,应写入开发文档并告知其他人员。

对于定义的公用类和公用方法,请及时写入开发文档,以备其他人查阅;如果需要修改公用类或公用方法,请与原作者协商,并将修改记录写入开发文档。

调用统一的数据库访问方法,保证程序良好的可迁移性。

对于可以复用的类、方法、页面、样式表以及JavaScript脚本,应尽量复用,以减少代码量。
 
=========================
本规范是一些通用规范加上我个人的一些看法,必有不当之处,望诸位及时指出、不吝赐教为盼。本规范在项目开发过程中会逐渐完善。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/usernamegaorn/archive/2007/10/20/1834275.aspx