表意清晰的命名規範是程式規劃的核心,如果整個系統所有的命名都與其功能相適合,並可以讓人“望文知意”,例如“Age”、“SetAge ()”,可大大提高系統的可維護性和健壯性,並可使系統關係清晰。反之,如果命名不能反應其含義,例如“v001”、“f002 ()”,那麼將適得其反。
說明 |
常用的命名風格如下。 (1)Pascal風格:包含一到多個單詞,每一個單詞第一個字母大寫,其他字母小寫,其餘字母均小寫。例如:CollegeStudent、HelloWorld等。 (2)Camel風格:包含一到多個單詞,第一個單詞首字母小寫,其餘單字首大寫,其他字母均小寫。例如:name、gender、somePara等。 |
下面就給出常用的一些命名規範,供讀者在開發中參考。
1.命名空間
命名空間命名採用Pascal風格,取名的一般規則如下。
CompanyName.TechnologyName
例如:
Microsoft.Office
MyCompany.NamingRule.Test
另外,需要用複數的時候要使用複數的名稱空間名。例如,使用System.Collections而不是System.Collection。但是,當遇到縮寫形式時,通常不需要使用複數。例如:使用System.IO而不是System.IOs。
名稱空間和類不能使用同樣的名字。例如,有一個類被命名為Student後,就不要再使用Student作為一個名稱空間。
2.類
C#中的類命名採用Pascal命名風格,取名的規則如下。
(1)在為類命名前首先要知道該類的作用,盡量以名詞或名詞短語命名,使程式員通過類名提供的線索,便可以瞭解這個類的準系統。
(2)盡量不使用縮寫,而用全寫。例如:使用CollegeStudent而不用CollegeStu。
(3)不要使用任何類首碼(例如C)和尾碼(例如Class)。
(4)不要使用帶底線的字元(例如College_Student)。
下面是一個合理的類名的樣本。
代碼19-1 類命名樣本
/// <summary>
/// 類名:Pascal命名風格,形如SomeClass。
/// </summary>
pulibc class CollegeStudent
{
…
}
3.私人成員
類的成員變數採用Camel風格,並使用首碼m_或者_。下面是一些合理的私人成員樣本。
代碼19-2 私人成員命名樣本
class CollegeStudent
{
/// <summary>
/// 私人成員命名:Camel命名風格,形如member。
/// </summary>
private string m_name;
private int m_age;
}
另外,有些程式員習慣於使用資料類型首碼,用來確定參數的資料類型。例如strName、nAge等,但這不是通用的規範。
4.屬性
類的屬性採用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;
}
}
}
5.方法
通常每個方法都是執行類的一個“動作”,所以對方法的命名應該清楚地說明該方法是做什麼的,用“動詞+名詞”的結構可以更加清晰的表達這種含義。例如,用ShowInfo()代替Info(),用LoadData()代替DataLoad(),這樣做的目的是更加明確這個方法的功能。
下面是一些合理的方法名樣本。
代碼19-4 方法命名樣本
class CollegeStudent
{
/// <summary>
/// 方法名:Pascal命名風格,形如SomeMethod。
/// </summary>
public void EnterSchool() {…}
}
另外,常常使用一些首碼來表達方法的含義,如下。
(1)Is的含義為問一個關於某樣事物的問題。例如:IsMale()。
(2)Get的含義為取得一個數值。例如:GetInfo()。
(3)Set的含義為設定一個數值。例如:SetInfo()。
6.方法參數
C#中,方法的參數採用camel風格。另外,有些程式員習慣於使用資料類型首碼,用來確定參數的資料類型。例如strName、nAge等。
下面是一些方法參數命名的樣本。
代碼19-5 方法參數命名樣本
class CollegeStudent
{
public void SetInfomation(string name,int age){…}
}
7.介面
同方法相似,介面採用Pascal命名規範,取名的規則如下。
(1)使用I作為首碼,表示其為一個介面。
(2)使用名詞或名詞短語,或者描述行為的形容詞來命名介面。例如IComponent(描述性名詞)、ICustomAttributeProvider(名詞短語)和IPersistable(形容詞)。
(3)盡量不使用縮寫,而用全寫。例如:使用IComponent而不用IComp。
(4)不要使用帶底線的字元(例如ICustom_AttributeProvider)。
例如:
代碼19-6 介面命名樣本
class CollegeStudent
{
/// <summary>
/// 介面名:Pascal命名風格,形如ISomeInterface。
/// </summary>
public interface IPlay{};
}
8.變數
局部變數採用camel風格,並盡量使用描述性強的名詞或名詞短語,並且不使用縮寫,如使用number,而不使用num。下面是一些變數命名的樣本。
int number=0;
string sqlString=””;
double averageScore=0.0;
CollegeStudent collegeStudent=new CollegeStudent();