C#程序编码规范

来源:互联网 发布:淘宝美特斯邦威官方店 编辑:程序博客网 时间:2024/05/19 00:09
 
C#程序编码规范
1、目的
为了保证企业编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。
2、范围
适用于企业所有基于.NET平台的软件开发工作。
3、规范内容
3.1、代码格式
·所有的缩进为4个空格,使用VS.NET的默认设置。
·在代码中垂直对齐左括号和右括号。
if(x==0)
{
     Response.Write("用户编号必须输入!");
}
    不允许以下情况:
if(x==0) {
Response.Write("用户编号必须输入!");
}
或者:
if(x==0){ Response.Write("用户编号必须输入!");}
·为了防止在阅读代码时不得不滚动源代码编辑器,每行代码或注释在1024*800的显示频率下不得超过一显示屏
·当一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。
·每一行上放置的语句避免超过一条。
·在大多数运算符之前和之后使用空格,这样做时不会改变代码的意图却可以使代码容易阅读。
例:int j = i + k;
而不应写为:int j=i+k;
·将大的复杂代码节分为较小的、易于理解的模块。
·编写 SQL 语句时,对于关键字使用全部大写,对于数据库元素(如表、列和视图)使用大小写混合。
·将每个主要的 SQL 子句放在不同的行上,这样更容易阅读和编辑语句,例如: SELECT FirstName, LastName
FROM Customers
WHERE State = 'WA'
· 在物理文件之间在逻辑上划分源代码。
· 编写 HTML 时,建立标准的标记和属性格式,如所有标记都大写或所有属性都小写。另一种方法是,坚持 XHTML 规范以确保所有 HTML 文档都有效。尽管在创建 Web 页时需折中考虑文件大小,但应使用带引号的属性值和结束标记以方便维护。
 
3.2、注释(Comment)规范
注释规范包括:模块(类)注释规范、类的属性、方法注释规范、代码间注释
3.2.1. 模块(类)注释规范
·模块开始必须以以下形式书写模块注释:
///<summary>
///模块编号:<模块编号,可以引用系统设计中的模块编号>
///作用:<对此类的描述,可以引用系统设计中的描述>
///作者:作者中文名
///编写日期:<模块创建日期,格式:YYYY-MM-DD>
///</summary>
·如果模块有修改,则每次修改必须添加以下注释:
///<summary>
///Log编号:<Log编号,从1开始一次增加>
///修改描述:<对此修改的描述>
///作者:修改者中文名
///修改日期:<模块修改日期,格式:YYYY-MM-DD>
///</summary>
3.2.2、类属性注释规范
·在类的属性必须以以下格式编写属性注释:
/// <summary>
///属性说明
/// </summary>
3.2.3、方法注释规范
在类的方法声明前必须以以下格式编写注释
/// <summary>
/// 说明:<对该方法的说明>
/// </summary>
/// <param name="<参数名称>"><参数说明></param>
/// <returns>
///<对方法返回值的说明,该说明必须明确说明返回的值代表什么含义>
/// </returns>
3.2.4、代码间注释规范
代码间注释分为单行注释和多行注释:
单行注释:
//<单行注释>
多行注释:
/*多行注释1
 多行注释2
 多行注释3*/
代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。
补充说明:
· 修改代码时,必须同时更新相关的注释。
· 避免在代码行的末尾添加注释;行尾注释使代码更难阅读。不过在批注变量声明时,行尾注释是合适的;在这种情况下,将所有行尾注释在公共制表位处对齐。
· 避免杂乱的注释,如一整行星号。而是应该使用空白将注释同代码分开。
· 避免在块注释的周围加上印刷框。这样看起来可能很漂亮,但是难于维护。
· 对由循环和逻辑分支组成的代码使用注释。这些是帮助源代码读者的主要方面。
 
3.3、变量(Variable)命名规范
3.3.1、程序文件(*.cs)中的变量命名规则
程序中变量名称 = 变量的前缀 +代表变量含意的英文单词或单词缩写。
·类模块级的变量请用“m_”作前缀
public class hello
{
    private string m_Name;
    private DateTime m_Date;
 }
·类的属性所对应的变量,采用属性名前加“m_”前缀的形式
public class hello
{
private string m_Name;
public string Name
{
Get
{
return m_Name;
}
}
}
·过程级的变量不使用前缀
public class hello
{
void say()
{
string SayWord;
}
}
· 过程的参数使用“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 )
{
}
·鉴于大多数名称都是通过连接若干单词构造的,请使用大小写混合的格式以简化它们的阅读。每个单词的第一个字母都是大写.
·即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如 i 或 j。
·在变量名中使用互补对,如 min/max、begin/end 和 open/close。
·不要使用原义数字或原义字符串,如 For i = 1 To 7。而是使用命名常数,如 For i = 1 To NUM_DAYS_IN_WEEK 以便于维护和理解。
· 布尔变量名应该包含 Is,这意味着 Yes/No 或 True/False 值,如 fileIsFound。
· 在类属性的名称中包含类名是多余的,如 Book.BookTitle。而是应该使用 Book.Title。
· 使用动词-名词的方法来命名对给定对象执行特定操作的例程,如 CalculateInvoiceTotal()。
· 在命名状态变量时,避免使用诸如 Flag 的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值。不是使用 documentFlag,而是使用更具描述性的名称,如 documentFormatType。 (此项只供参考)
 
3.3.2、控件命名规则
控件命名=Web控件缩写前缀 + “_” +变量名
控件          缩写
Label         lbl
TextBox       txt
CheckBox      chk
Button        btn
ListBox       lst
DropDownList drp
等等
3.4、 常量命名规范
常量名也应当有一定的意义,格式为 NOUN 或 NOUN_VERB。常量名均为大写,字之间用下划线分隔。
例:
private const bool   WEB_ENABLEPAGECACHE_DEFAULT           = true;
 
private const int    WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;
private const bool   WEB_ENABLESSL_DEFAULT                 = false;
注:
变量名和常量名最多可以包含 255 个字符,但是,超过 25 到 30 个字符的名称比较笨拙。此外,要想取一个有实际意义的名称,清楚地表达变量或常量的用途,25 或 30 个字符应当足够了。
3.5、 类(Class)命名规范
·名字应该能够标识事物的特性。
·名字尽量不使用缩写,除非它是众所周知的。
·名字可以有两个或三个单词组成,但通常不应多于三个。
·在名字中,所有单词第一个字母大写。
例如    IsSuperUser,包含ID的,ID全部大写,如CustomerID。
·使用名词或名词短语命名类。
·少用缩写。
·不要使用下划线字符 (_)。
例:
public class FileStream
public class Button
public class String
3.6、接口(Interface)命名规范
和类命名规范相同,唯一区别是 接口在名字前加上“I”前缀
    例:
    interface IDBCommand;
    interface IButton;
3.7.    方法(Method)命名规范
      和类命名规范相同。
3.8.    命名空间(NameSpace)命名规范
      和类命名规范相同。
 
 
原创粉丝点击