C#编程规范-简化版
2011.03.16
2015.03.06修订2.0
Ø 方便代码的交流和维护。
Ø 不影响编码的效率,不与大众习惯冲突。
Ø 使代码更美观、阅读更方便。
Ø 使代码的逻辑更清晰、更易于理解。
Ø Pascal 大小写:将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal 大小写。例如:BackColor
Ø Camel 大小写:标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backColor
Ø 在每个文件头必须包含以下注释说明
/*----------------------------------------------------------------
// 文件名:
// 文件功能描述:
//
//
// 创建标识:
//
// 修改标识:
// 修改描述:
//
// 修改标识:
// 修改描述:
//----------------------------------------------------------------*/
文件功能描述只需简述,具体详情在类的注释中描述。
创建标识和修改标识由创建或修改人员的拼音或英文名加日期组成。如:李轶20040408
一天内有多个修改的只需做一个在注释说明中做一个修改标识就够了。
在所有的代码修改处加上修改标识的注释。
Ø 缩进是4个空格,每行一个Tab(4个空格),不要在代码中使用Tab字符。
Ø 左花括号 “{” 放于关键字或方法名的下一行并与之对齐。如
if (condition)
{
}
public int Add(int x, int y)
{
}
Ø 左花括号 “{” 要与相应的右花括号 “}”对齐。
Ø 通常情况下左花括号 “{”单独成行,不与任何语句并列一行。
Ø if、while、do语句后一定要使用{},即使{}号中为空或只有一条语句。如
if (somevalue == 1)
{
somevalue = 2;
}
Ø 使用 Pascal 大小写。
Ø 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称FileStream,而不是
CFileStream。
Ø 不要使用下划线字符。
Ø 对参数名称使用 Camel 大小写。
Ø 使用描述参数的含义的名称,而不要使用描述参数的类型的名称。开发工具将提供有关参数的类型的有意义的信息。因此,通过描述意义,可以更好地使用参数的名称。少用基于类型的参数名称,仅在适合使用它们的地方使用它们。
Ø 不要给参数名称加匈牙利语类型表示法的前缀。
如int iDemo; (错误,Demo前不需要加类型前缀,应为int demo;)
Ø 使用动词或动词短语命名方法。
Ø 使用 Pascal 大小写。
Ø 使用名词或名词短语命名属性。
Ø 使用 Pascal 大小写。
Ø 不要使用匈牙利语表示法。
Ø 不要对变量名使用匈牙利语表示法。好的名称描述语义,而非类型。
常量
Ø 全部大写,如 int DEMO = 123;
Ø 拼写出字段名称中使用的所有单词。仅在开发人员一般都能理解时使用缩写。字段名称不
要使用大写字母。下面是正确命名的字段的示例。
class SampleClass
{
string url;
string destinationUrl;
}
Ø 使用字段尽量加上“this.”。这样阅读程序能很清楚的区分字段和局部变量。
Ø 不要对字段名使用匈牙利语表示法。好的名称描述语义,而非类型。
Ø 能用参数或者局部变量代替的,不要使用字段。
Ø 不要对字段名或静态字段名应用前缀。具体说来,不要对字段名称应用前缀来区分静态和非静态字段。例如,应用g_ 或 s_ 前缀是不正确的。
Ø 每行最多包含一个语句。如
a++; //推荐
b--; //推荐
a++;b--; //不推荐
复合语句是指包含"父语句{子语句;子语句;}"的语句,使用复合语句应遵循以下几点
Ø 子语句要缩进。
Ø 左花括号“{” 在复合语句父语句的下一行并与之对齐,单独成行。
Ø 即使只有一条子语句要不要省略花括号“ {}”。 如
while (d + = s++)
{
n++;
}
为了保持程序的高可读性,使用if条件语句时,尽量少用else。
Ø 常见写法
If
{
…
}
else
{
}
Ø 推荐写法
If
{
….
Return
}
If
{
….
Return --直接return掉,下面执行else的语句
}
……
通过数据库判断数据是否符合。
Ø 推荐写法
存储过程端
RAISERROR('发生错误',16, 1)
RETURN
客户端
DbCommand dc = newDbCommand(System.Data.CommandType.StoredProcedure);
dc.CommandText = "P_RaiseError";
try
{
dc.Execute();
}
catch (Exception ex)
{
this.ShowMessage(ex.Message);
}
页面的数据如果放在Session里面,对于同一个用户同时打开多个此页面时,会出现数据互串。此时需要对Session名称进行处理,保持唯一性。
Ø 推荐写法
public string CurrentServiceSessionID
{
get
{
if(ViewState["CurrentServiceSessionID"] == null)
{
ViewState["CurrentServiceSessionID"] = System.Guid.NewGuid();
}
returnViewState["CurrentServiceSessionID"].ToString();
}
}
public object OrderServiceSession
{
get
{
returnSession[CurrentServiceSessionID];
}
set
{
Session[CurrentServiceSessionID] =value;
}
}
Ø 推荐写法
using LiteFrame.Web;
protected void Page_Load(object sender,EventArgs e)
{
this.ButtonSave.ClickDisabled();
}