C# Coding Standard

在以前版本的 Visual Studio 中 , 微软曾建议使用匈牙利命名法来写代码 . 在最近发布的 .NET 和它的编程语言中 , 微软更换了他的这一法则 .

1. 对格式与方法名称使用 PASCAL 风格 [1]

public class S ome C lass

{

public S ome M ethod(){}

}

2. 对局部变量和方法参数使用 Camel 风格 [2]

int n umber;

void MyMethod( int s ome N umber)

{}

3. 使用 ** I ** 作为接口前缀

interface I MyInterface

{..}

4. 使用 ** m_ ** 作为私有成员变量前缀

public class SomeClass

{

private int m_ Number;

}

5. 使用 Attribute 作为自定义属性类的后缀

6. 使用 Exception 作为自定义异常处理类的后缀

7. 使用动词形式命名方法名 , 如 ShowDialog()

8. 带有返回值的方法应该有一个方法来描述返回值 , 如 GetObjectStatus()

9. 使用易描述的变量名称

l 避免使用单一字符描述变量名称 , 如 i 或 t . 应使用 index 或 temp 替代

l 对共有以及受保护成员避免使用匈牙利命名法则 [3]

l 绝不使用缩写字符 , 如使用 num 代替 number

10. 总是使用 C# 预定义格式 , 而不使用在 System 空间内的别名

object NOT 0bject

string NOT String

int NOT Int32

11. 一般的 , 对于格式使用大写字母 , 当处理 .NET 格式 Type 时使用 Type 后缀

//Correct:

public class LinkedList

  1<k, t="">
  2
  3{..} 
  4
  5//Avoid: 
  6
  7public class  LinkedList<keytype,datatype>
  8
  9{..} 
 10
 1112\.  使用易理解的命名空间  [4]  名称  ,  如产品或公司名称 
 12
 1313\.  避免使用命名空间的完整限定名称  ,  应使用  using  声明替代 
 14
 1514\.  避免  using  声明放置在命名空间内部 
 16
 1715\.  将所有的框架命名空间分组  ,  将用户或第三方命名空间放置在其下 
 18
 19using  System; 
 20
 21using  System.Collections; 
 22
 23using  System.ComponentModel; 
 24
 25using  System.Data; 
 26
 27using  MyCompany; 
 28
 29using  MyControls; 
 30
 3116\.  使用委托引用  [5]  代替显式的委托实例 
 32
 33delegate void  SomeDelegate(); 
 34
 35public void  SomeMethod() 
 36
 37{..} 
 38
 39SomeDelegate someDelegate= **SomeMethod** ; 
 40
 4117\.  保持严格的缩进 
 42
 43l  对缩进使用  3  个空格位 
 44
 45l  绝不使用  TAB  或者不标准的缩进  ,  如  1,2  或  4  个空格位 
 46
 4718\.  将注释缩拍在与代码缩进同等级的位置上 
 48
 4919\.  所有的注释应该通过拼写检查  .  拼错的注释将预示冗余的开发 
 50
 5120\.  所有的成员变量应该在开始就被声明  ,  并使用单独一行将属性与方法区域分开 
 52
 53public class  MyClass 
 54
 55{ 
 56
 57int  **m_Number** ; 
 58
 59string  **m_Name** ; 
 60
 61public void  SomeMethodl() 
 62
 63{} 
 64
 65public void  SomeMethod2() 
 66
 67{} 
 68
 69} 
 70
 7121\.  在离第一次使用变量尽可能近的地方声明该局部变量 
 72
 7322\.  文件名称应反映出其包含的类 
 74
 7523\.  当使用  partial  类  [6]  并将其分配给每个文件一部分时  ,  对每个文件命名使用后缀  **_ P  _ ** 并附带一个额外的数字 
 76
 77//In MyClassP1.cs 
 78
 79public partial class  MyClass 
 80
 81{..} 
 82
 83// In MyClassP2.cs 
 84
 85public partial class  MyClass 
 86
 87{..} 
 88
 8924\.  将反括号  ( ** {  ** )  放置与新的一行 
 90
 9125\.  对于匿名方法参照有规律的代码规划  ,  其缩进应与匿名委托声明对齐 
 92
 93delegate void  SomeDelegate (  string  someString); 
 94
 95//Correct: 
 96
 97public void  InvokeMethod() 
 98
 99{ 
100
101SomeDelegate someDelegate=  delegate  (  string  name) 
102
103{ 
104
105MessageBox.Show(name); 
106
107}; 
108
109someDelegate ("Juval"); 
110
111} 
112
113//Avoid 
114
115public void  InvokeMethod() 
116
117{ 
118
119SomeDelegate someDelegate=  delegate  (  string  name) 
120
121{MessageBox.Show(name);}; 
122
123someDelegate(”Juval"); 
124
125} 
126
12726\.  对于匿名缺省参数的方法  ,  应该使用空括号表示  . 
128
129delegate void  SomeDelegate(); 
130
131//Correct 
132
133SomeDelegate someDelegate1=  delegate  **()**
134
135{ 
136
137MessageBox.Show("Hello"); 
138
139}; 
140
141//Avoid 
142
143SomeDelegate someDelegate1=  delegate 
144
145{ 
146
147MessageBox.Show("Hello");   
148};    
149
150
151  
152由于本人E文有限,所以翻译注释不当之处,请指明。   
153
154
155[1]  特指使用  Pascal  的命名规范命名类型和方法的名字 
156
157[2]  特指使用  camel  命名规范命名局部变量和方法的参数 
158
159[3]  匈牙利命名法则  :  变量名  =  变量类型  \+  变量的英文意思  (  或缩写  ) 
160
161[4]  namespace  用于声明一个范围  .  此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法  . 
162
163[5]  delegate  声明定义一种引用类型  ,  该类型可用于将方法用特定的签名封装  .  委托实例封装静态方法或实例方法  .  委托大致类似于  C++  中的函数指针  ;  但是  ,  委托是类型安全和可靠的 
164
165[6]  partial  简单来说即是使用不完整的类定义并且将部分分配到每个文件中 
166
167&lt;/div</keytype,datatype></k,>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus