表意清晰的命名规范是程序规划的核心,如果整个系统所有的命名都与其功能相适合,并可以让人“望文知意”,例如“Age”、“SetAge ()”,可大大提高系统的可维护性和健壮性,并可使系统关系清晰。反之,如果命名不能反应其含义,例如“v001”、“f002 ()”,那么将适得其反。
说明 |
常用的命名风格如下。 (1)Pascal风格:包含一到多个单词,每一个单词第一个字母大写,其他字母小写,其余字母均小写。例如:CollegeStudent、HelloWorld等。 (2)Camel风格:包含一到多个单词,第一个单词首字母小写,其余单词首字母大写,其他字母均小写。例如:name、gender、somePara等。 |
下面就给出常用的一些命名规范,供读者在开发中参考。
命名空间命名采用Pascal风格,取名的一般规则如下。
CompanyName.TechnologyName
例如:
Microsoft.Office
MyCompany.NamingRule.Test
另外,需要用复数的时候要使用复数的名称空间名。例如,使用System.Collections而不是System.Collection。但是,当遇到缩写形式时,通常不需要使用复数。例如:使用System.IO而不是System.IOs。
名称空间和类不能使用同样的名字。例如,有一个类被命名为Student后,就不要再使用Student作为一个名称空间。
C#中的类命名采用Pascal命名风格,取名的规则如下。
(1)在为类命名前首先要知道该类的作用,尽量以名词或名词短语命名,使程序员通过类名提供的线索,便可以了解这个类的基本功能。
(2)尽量不使用缩写,而用全写。例如:使用CollegeStudent而不用CollegeStu。
(3)不要使用任何类前缀(例如C)和后缀(例如Class)。
(4)不要使用带下划线的字符(例如College_Student)。
下面是一个合理的类名的示例。
代码19-1 类命名示例
/// <summary>
/// 类名:Pascal命名风格,形如SomeClass。
/// </summary>
pulibc class CollegeStudent
{
…
}
类的成员变量采用Camel风格,并使用前缀m_或者_。下面是一些合理的私有成员示例。
代码19-2 私有成员命名示例
class CollegeStudent
{
/// <summary>
/// 私有成员命名:Camel命名风格,形如member。
/// </summary>
private string m_name;
private int m_age;
}
另外,有些程序员习惯于使用数据类型前缀,用来确定参数的数据类型。例如strName、nAge等,但这不是通用的规范。
类的属性采用Pascal风格。下面是一些合理的属性示例。
代码19-3 属性命名示例
class CollegeStudent
{
/// <summary>
/// 属性命名:Pascal命名风格,形如Name。
/// </summary>
public string Name
{
set
{
if(value!=null)
this.m_name=value;
}
get
{
return this.m_name;
}
}
}
通常每个方法都是执行类的一个“动作”,所以对方法的命名应该清楚地说明该方法是做什么的,用“动词+名词”的结构可以更加清晰的表达这种含义。例如,用ShowInfo()代替Info(),用LoadData()代替DataLoad(),这样做的目的是更加明确这个方法的功能。
下面是一些合理的方法名示例。
代码19-4 方法命名示例
class CollegeStudent
{
/// <summary>
/// 方法名:Pascal命名风格,形如SomeMethod。
/// </summary>
public void EnterSchool() {…}
}
另外,常常使用一些前缀来表达方法的含义,如下。
(1)Is的含义为问一个关于某样事物的问题。例如:IsMale()。
(2)Get的含义为取得一个数值。例如:GetInfo()。
(3)Set的含义为设定一个数值。例如:SetInfo()。
C#中,方法的参数采用camel风格。另外,有些程序员习惯于使用数据类型前缀,用来确定参数的数据类型。例如strName、nAge等。
下面是一些方法参数命名的示例。
代码19-5 方法参数命名示例
class CollegeStudent
{
public void SetInfomation(string name,int age){…}
}
同方法相似,接口采用Pascal命名规范,取名的规则如下。
(1)使用I作为前缀,表示其为一个接口。
(2)使用名词或名词短语,或者描述行为的形容词来命名接口。例如IComponent(描述性名词)、ICustomAttributeProvider(名词短语)和IPersistable(形容词)。
(3)尽量不使用缩写,而用全写。例如:使用IComponent而不用IComp。
(4)不要使用带下划线的字符(例如ICustom_AttributeProvider)。
例如:
代码19-6 接口命名示例
class CollegeStudent
{
/// <summary>
/// 接口名:Pascal命名风格,形如ISomeInterface。
/// </summary>
public interface IPlay{};
}
局部变量采用camel风格,并尽量使用描述性强的名词或名词短语,并且不使用缩写,如使用number,而不使用num。下面是一些变量命名的示例。
int number=0;
string sqlString=””;
double averageScore=0.0;
CollegeStudent collegeStudent=new CollegeStudent();