1、命名约定与规范
注意:
在本文档中使用了帕斯卡命名法(PascalCasing)与驼峰命名法(Camel Casing)。
帕斯卡命名法 – 所有单词的首字母大写,其余的字母小写。
实例:BackColor
驼峰命名法 – 除第一个单词之外,所有单词的首字母大写,其余的字母小写。
实例:backColor
1、 使用帕斯卡命名法为类命名
public class HelloWorld
{
...
}
2、 使用帕斯卡命名法为方法命名
void SayHello(string name)
{
...
}
3、 使用驼峰命名法为变量和方法的参数命名
int totalCount = 0;
void SayHello(string name)
{
string fullMessage= “Hello“+ name;
...
}
4、 使用前缀“I“结合驼峰命名法为接口命名(实例:IEntity)
5、 不要使用匈牙利命名法为变量命名。
在早期,许多程序员喜欢将数据类型作为前缀给变量命名,并且使用m_作为成员变量的前缀,例如:
stringm_sName;
int nAge;
然而,在.NET编码规范中,已经不推荐这种方式。数据类型的使用和m_作为前缀表示成员变量的方式已经不应该继续使用了。所有的变量应该使用驼峰命名法进行命名。
有些程序员仍倾向于使用m_作为前缀来表示成员变量,因为没有比这更简单的方式来辨别一个成员变量了。
6、 使用具有实际意义的,具有描述性的词语来命名变量。不要使用缩写命名。
Good:
string address;
int salary;
Not Good:
string nam;
string addr;
int sal;
7、 不要使用单个字符表示的变量名,像i、n、s等等。应该使用像这样的名字index、temp。
针对这一情况的例外是变量在循环中作为迭代器使用:
for( int i = 0;i < count; i++ )
{
...
}
如果这个变量只被用来作为一个迭代器计数器并且不会用在循环中的其它地方,许多人仍然喜欢使用单个字符的变量(i)来代替取名。
8、 不要使用下划线(_)作为本地变量的名字。
9、 所有的成员变量必须使用下划线(_)作为前缀,以便与其它的本地变量作出区分。
10、不要使用类似于关键字的变量名。
11、为布尔类型的变量、属性和方法添加“is“或类似的前缀。
private bool _isFinished;
12、命名空间起名应该遵循下面的标准模式
13、针对UI元素使用恰当的前缀,以便能够把它们与其它的变量作出区分。
这里推荐两种不同的方法。
a、 为所有的UI元素使用一个共同的前缀(ui_)。这将会帮助你将所有的UI元素划分到一起,并且能够通过智能提示轻松的访问。
b、 针对每个不同的UI元素使用恰当的前缀。
Control |
Prefix |
Label |
lbl |
TextBox |
txt |
DataGrid |
dtg |
Button |
btn |
ImageButton |
imb |
Hyperlink |
hlk |
DropDownList |
ddl |
ListBox |
lst |
DataList |
dtl |
Repeater |
rep |
Checkbox |
chk |
CheckBoxList |
cbl |
RadioButton |
rdo |
RadioButtonList |
rbl |
Image |
img |
Panel |
pnl |
PlaceHolder |
phd |
Table |
tbl |
Validators |
val |
14、文件名应该与类名保持一致。
例如,对于类HelloWorld,它的文件名应该是HelloWorld.cs(或者是HelloWorld.vb)。
15、使用帕斯卡命名法为文件命名。
2、缩进和空格
1、 使用TAB键进行缩进。不要使用空格键缩进。定义Tab的大小为4个字符。
2、 注释应该与代码保持列对齐(使用相同的缩进)
Good:
// Format a message and display
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is :" + currentTime.ToShortTimeString();
MessageBox.Show ( message );
Not Good:
// Format a message and display
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : "+ currentTime.ToShortTimeString();
MessageBox.Show( message );
3、 同一层级的大括号({})应该保持列对齐。
4、 使用一个空行来区分代码内的逻辑分组。
Good:
bool SayHello ( string name )
{
string fullMessage ="Hello " + name;
DateTime currentTime =DateTime.Now;
string message = fullMessage + ", the time is : "+ currentTime.ToShortTimeString();
MessageBox.Show ( message);
if ( ... )
{
// Do something
// ...
return false;
}
return true;
}
Not Good:
bool SayHello (string name)
{
string fullMessage ="Hello " + name;
DateTime currentTime =DateTime.Now;
string message = fullMessage + ", the time is : "+ currentTime.ToShortTimeString();
MessageBox.Show ( message);
if ( ... )
{
// Do something
// ...
return false;
}
return true;
}
5、 在类内部每个方法之间应该有且仅有一个空行。
6、 If、for等关键字后跟随的大括号应该位于单独的一行,而不是与这些关键字位于同一行。
Good:
if ( ... )
{
// Do something
}
Not Good:
if ( ... ) {
// Do something
}
7、 在每一个运算符和小括号的前后都要加入一个空格。
Good:
if ( showResult == true )
{
for ( int i = 0; i< 10; i++ )
{
//
}
}
NotGood:
if(showResult==true)
{
for(int i=0;i<10;i++)
{
//
}
}
8、 使用#region把相关的代码分成一组。如果你使用#region来进行适当的分组,那么我们的代码页在所有定义都被隐藏时,看起来会像下面这样
9、保持私有的成员变量、属性和方法位于代码文件的上部,公有成员位于代码文件的下部。