1.用Pascal大小寫規則命名方法、類型、結構、接口、委托、枚舉、枚舉項 、屬性、事件等。
public class DataGrid
{
public void DataBind()
{
}
}
2.用Camel大小寫規則命名所有變量、字段和參數。
可采用Pascal也可采用Camel大小寫規則的:常量、控件ID。
public class Product
{
private string _productId;
private string _productName;
public void AddProduct(string productId,string productName)
{
}
}
public class BaseView:ViewPage
{
protected Label label; //Camel命名控件ID
protected Login Login1; //Pascal命名空間ID
}
3.所有的私有成員變量前加前綴“_”。
public class DataBase
{
private string _connectionString;
}
4.接口的名稱加前綴 “I”。
public interface IConvertible
{
byte ToByte();
}
5.自定義的屬性以“Attribute”結尾。
public class TableAttribute:Attribute
{
//在使用這個屬性時,不沖突的情況下,直接可以省掉 TableAttribute後面的Attribute用Table也可以。
}
6.自定義的異常以Exception結尾。
public class NullEmptyException:Exception
{
}
7.方法的命名。一般將其命名為動賓短語。 (參數作為賓語時,在不混淆情 況下,可以省略。)
public class File
{
public void CreateFile(string filePath)
{
}
public void GetPath(string path)
{
}
public void Delete(string fileName)
{
}
}
8.局部變量的名稱要有意義。
不要用x,y,z等等,用For循環變量中可使用i,j,k,l,m,n。 (當循環嵌套 超過三個時,應抽出方法。)
public class User
{
public void GetUser()
{
string[] userIds={ "ziv","zorywa","zlh"};
for(int i=0,k=userIds.Length;i <k;i++)
{
}
}
}
9.所有的成員變量聲明在類的頂端,用一個換行把它和方法分開。
public class Product
{
private string _productId;
private string _productName;
public void AddProduct(string productId,string productName)
{
}
}
10.用有意義的名字命名namespace,如:公司名、產品名。 (有人問到,如 果是公用類庫怎麼辦,我的答案是,規則依然執行,比如Zivsoft.Data,或 Zivsoft.Data.Access等)
namespace Zivsoft//公司命名
{
}
namespace ERP//產品命名
{
}
11.建議局部變量在最接近使用它時再聲明。
12.使用某個控件的值時,盡量命名局部變量。
public string GetTitle()
{
string title=this.lblTitle.Text;
return title;
}
14.把引用的系統的namespace和自定義或第三方的用一個換行把它們分開。
using System;
using System.Web.UI;
using System.Windows.Forms;
using Zivsoft.Data;
using Zivsoft.Data.SQLServer;//注意,最好建議按字目順序排序
using Zivsoft.Localization;
15.文件名要能反應類的內容,最好是和類同名,一個文件中一個類或一組關 連類。 如果代碼超過3000行,或者一個類分幾塊,可以采用Config.private.cs 或Config.public.cs命名。
16.目錄結構中要反應出namespace的層次。
17.大括號 "{“要新起一行。 個人覺得比較直觀。
public Sample()
{
//
// TODO: 在此處添加構造函數邏輯
//
}
18. 普通get/set屬性,建議采用3.0的風格:
public string Name
{
get;
set;
}
public string Age
{
get;
private set;
}
19. 局部變量,能用var,盡量使用var關鍵字。(注意,讀代碼時如果造成 類型不明確,采用具體類型)
var i=0;
var strName="Lihua";
UserInfo objUser=GetUserInfo();//注意,不推薦var
20. 對象初始化,能簡寫最好簡寫:
var vt=new ValueText{Value=10,Text="Age"};
其實規則很重要,它是一種標准,可有可無,但有總會比無好,大家正在編 碼的同志仔細看看,給點改進意見,目前更新到20條。
今天很巧,剛好零點,趕上cnblogs的今日頭條啦。另外,無意搜到“周利華 ”在google記錄裡竟然有16600條之多,感慨之余,都分不清哪個是自己,哈哈 ,最後加上“cnblogs”才找到自己。
最後,熬夜把這新的C#3.0編碼習慣與命名規則獻上,在分享中彼此提高。
綜合網友意見和建議,我剛做了部分修改。