C#程序编码规范

** 1. ** ** 目的 **

为了保证企业编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。

** 2. ** ** 范围 **

适用于企业所有基于 .NET 平台的软件开发工作。

** 3. ** ** 规范内容 ** ** **

** 3.1. ** ** 代码格式 ** ** **

u 所有的缩进为 4 个空格,使用 VS.NET 的默认设置。

u 在代码中垂直对齐左括号和右括号。

if (x==0)

{

Response.Write("用户编号必须输入!");

}

** 不允许以下情况: **

if (x==0) {

Response.Write("用户编号必须输入!");

}

或者:

if (x==0){ Response.Write("用户编号必须输入!");}

u 为了防止在阅读代码时不得不滚动源代码编辑器,每行代码或注释在 1024*800 的显示频率下不得超过一显示屏

u 当一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。

u 每一行上放置的语句避免超过一条。

u 在大多数运算符之前和之后使用空格,这样做时不会改变代码的意图却可以使代码容易阅读。

例:

int j = i + k;

** 而不应写为 **

int j=i+k;

u 将大的复杂代码节分为较小的、易于理解的模块。

u 编写 SQL 语句时,对于关键字使用全部大写,对于数据库元素(如表、列和视图)使用大小写混合。

u 将每个主要的 SQL 子句放在不同的行上,这样更容易阅读和编辑语句,例如: SELECT FirstName, LastName

FROM Customers

WHERE State = 'WA'

** 3.2. ** ** 注释( ** ** Comment ** ** )规范 ** ** **

注释规范包括:模块(类)注释规范、类的属性、方法注释规范、代码间注释

** 3.2.1. ** ** 模块(类)注释规范 ** ** **

模块开始必须以以下形式书写模块注释:

///

 1<summary>
 2
 3///  模块编号:  &lt; 模块编号,可以引用系统设计中的模块编号  &gt;
 4
 5///  作用:  &lt; 对此类的描述,可以引用系统设计中的描述  &gt;
 6
 7///  作者:作者中文名 
 8
 9///  编写日期:  &lt; 模块创建日期,格式:  YYYY-MM-DD&gt;
10
11///</summary>

如果模块有修改,则每次修改必须添加以下注释:

///

 1<summary>
 2
 3///  Log  编号:  <log ,="" 1="" 从="" 开始一次增加="" 编号="">
 4
 5///  修改描述:  &lt; 对此修改的描述  &gt;
 6
 7///  作者:修改者中文名 
 8
 9///  修改日期:  &lt; 模块修改日期,格式:  YYYY-MM-DD&gt;
10
11///</log></summary>

** 3.2.2. ** ** 类属性注释规范 ** ** **

在类的属性必须以以下格式编写属性注释:

///

1<summary>
2
3///  属性说明 
4
5///  </summary>

** 3.2.3. ** ** 方法注释规范 ** ** **

在类的方法声明前必须以以下格式编写注释

///

1<summary>
2
3///  说明:&lt;对该方法的说明&gt;
4
5///  </summary>

///

1<param name="&lt;参数名称&gt;"/>

<参数说明>

///

1<returns>
2
3///  &lt;对方法返回值的说明,该说明必须明确说明返回的值代表什么含义&gt;
4
5///  </returns>

** 3.2.4. ** ** 代码间注释规范 ** ** **

代码间注释分为单行注释和多行注释:

单行注释:

//<单行注释>

多行注释:

/*多行注释1

多行注释2

多行注释3*/

代码中遇到语句块时必须添加注释( if,for,foreach,…… ) , 添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。

** 3.3. ** ** 变量( ** ** Variable ** ** )命名规范 ** ** **

** 3.3.1. ** ** 程序文件 ** ** (*.cs) ** ** 中的变量命名规则 ** ** **

程序中变量名称 = 变量的前缀 + 代表变量含意的英文单词或单词缩写。

1. 类模块级的变量请用“ m_ ”作前缀

public class hello

{

private string m_Name ;

private DateTime m_Date ;

}

2. 类的属性所对应的变量,采用属性名前加“ m_”前缀的形式

public class hello

{

private string m_Name ;

public string Name

{

get

{

return m_Name ;

}

}

}

3. 过程级的变量不使用前缀

public class hello

{

void say()

{

string SayWord ;

}

}

4. 过程的参数使用“ p_ ”作为参数

public class hello

{

void say(string p_SayWord )

{

}

}

补充说明:

针对异常捕获过程中的 Exception 变量命名,在没有冲突的情况下,统一命名为 e ;

如果有冲突的情况下,可以重复 e ,比如: ee 。

Try

{

//your code

try

{

//code

}

catch(Exception ee )

{

//your code

}

}

catch(Exception e )

{

//your code

}

补充:如果捕获异常不需要作任何处理,则不需要定义 Exception 实例

例:

try

{

//your code

}

catch( Exception )

{

}

5. 鉴于大多数名称都是通过连接若干单词构造的,请使用大小写混合的格式以简化它们的阅读。每个单词的第一个字母都是大写 .

6. 即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如 ij

7. 在变量名中使用互补对,如 min/max 、 begin/end 和 open/close 。

8. 不要使用原义数字或原义字符串,如 For i = 1 To 7 。而是使用命名常数,如 For i = 1 To NUM_DAYS_IN_WEEK 以便于维护和理解。

<B style="m

Published At
Categories with Web编程
Tagged with
comments powered by Disqus