1 命名规则与风格
在以前版本的 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
153由于本人E文有限,所以翻译注释不当之处,请指明。
154
155稍后是第二部分——编码实践,不过要点时间了,因为会有较多注释(我的习惯啦)
156
157
158* * *
159
160[1] 特指使用 Pascal 的命名规范命名类型和方法的名字
161
162[2] 特指使用 camel 命名规范命名局部变量和方法的参数
163
164[3] 匈牙利命名法则 : 变量名 = 变量类型 \+ 变量的英文意思 ( 或缩写 )
165
166[4] namespace 用于声明一个范围 . 此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法 .
167
168[5] delegate <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times</keytype,datatype></k,>