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. 类注释规范

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

///<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)中的变量命名规则

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

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.  即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如 i 或 j。

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

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

3.3.2. 控件命名规则

 

控件命名=Web控件缩写前缀  + “_” +变量名

 

 


控件


缩写


Label


lbl


TextBox


txt


CheckBox


chk


Button


cmd


ListBox


lst


DropDownList


drp


等等

 

3.4   常量命名规范

常量名也应当有一定的意义,格式为 NOUNNOUN_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)命名规范

  1. 名字应该能够标识事物的特性。
  2. 使用名词或名词短语命名类。
  3. 名字尽量不使用缩写,除非它是众所周知的。
  4. 名字可以有两个或三个单词组成,但通常不应多于三个。
  5. 在名字中,所有单词第一个字母大写。
  6. 例如   IsSuperUser,包含ID的,ID全部大写,如CustomerID。
  7. 少用缩写。
  8. 不要使用下划线字符 (_)。

例:

public class FileStream

public class Button

public class String

 

3.6   接口(Interface)命名规范

和类命名规范相同,唯一区别是,接口在名字前加上“I”前缀。

例:

interface IDBCommand;

interface IButton;

3.7.    方法(Method)命名规范

  1. 名字应该能够标识事物的特性。
  2. 使用动词或动名词短语命名类。
  3. 在名字中,所有单词第一个字母大写。

2.    名字尽量不使用缩写,除非它是众所周知的。

3.    名字可以有两个或三个单词组成,但通常不应多于三个。

6.    少用缩写。

7.      不要使用下划线字符 (_)。

8.      不要在方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook,而可以将方法命名为 Book.Close

3.7.    属性(Attribute)命名规范

  1. 名字应该能够标识事物的特性。
  2. 使用名词或名词短语命名属性。
  3. 在名字中,所有单词第一个字母大写。
  4. 名字尽量不使用缩写,除非它是众所周知的。
  5. 名字可以有两个或三个单词组成,但通常不应多于三个。
  6. 少用缩写。
  7. 不要使用下划线字符 (_)。

            事件(Event)命名规范

  1. 1.   在名字中,所有单词第一个字母大写。
  2. 对事件处理程序名称使用 EventHandler 后缀.
  3. 指定两个名为 sender 和 e 的参数。sender 参数表示引发事件的对象。sender 参数始终是 object 类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为 e 的事件类的实例中。对 e 参数类型使用适当而特定的事件类.
  4. 用 EventArgs 后缀命名事件参数类.
  5. 考虑用动词命名事件。例如,命名正确的事件名称包括 Clicked、Painting 和 DroppedDown。
  6. 使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。例如,可以取消的 Close 事件应当具有 Closing 事件和 Closed 事件。不要使用 BeforeXxx/AfterXxx 命名模式。
  7. 不要在类型的事件声明上使用前缀或者后缀。例如,使用 Close,而不要使用 OnClose。
  8. 通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为 OnXxx)。此方法只应具有事件参数 e,因为发送方总是类型的实例.

例如:

public delegate void MouseEventHandler(object sender, MouseEventArgs e);

3.8.    命名空间(NameSpace)命名规范

  1. 命名命名空间时的一般性规则是使用公司名称,后跟技术名称和可选的功能与设计,如下所示。

CompanyName.TechnologyName[.Feature][.Design]

例如:

Microsoft.Media

Microsoft.Media.Design

  1. 在名字中,所有单词第一个字母大写,并用句点分隔逻辑组件,如 Microsoft.Office.PowerPoint 中所示。
  2. 不要为命名空间和类使用相同的名称。例如,不要既提供 Debug 命名空间也提供 Debug 类
时间: 2024-11-07 22:31:43

C#程序编码规范 ----转的相关文章

JavaEE程序编码规范

目   录 JAVA程序编码规范1 1变量的命名规则1 1.1常量(包含静态的)1 1.2类变量(静态变量)及实例变量1 1.3局部变量1 1.4参数2 1.5其它2 2方法的命名规则3 3类及接口的命名规则3 3.1一般类名3 3.2值对象3 3.3Action3 3.4MyBatis配置文件4 3.5DAO4 3.6Application Service4 3.7工具类4 3.8门面类4 3.9代理类4 3.10异常类4 3.11接口类5 3.12接口实现类5 4作用域5 4.1类的作用域5

[转]JavaScript程序编码规范

原文:http://javascript.crockford.com/code.html 作者:Douglas Crockford 译文:http://www.yeeyan.com/articles/view/cloudwater/4042 译者:cloudwater 更新:2009-12-13 01:08:29 这是一套适用于JavaScript程序的编码规范.它基于Sun的Java程序编码规范.但进行了大幅度的修改, 因为JavaScript不是Java. 软件的长期价值直接源于其编码质量.

C#程序编码规范

该规范适用于所有基于C#开发的.Net平台项目,为详细设计,代码编写和代码审核提供参考和依据. 一.代码格式要使所有的缩进为一个Tab,即4个空格,使用VS.NET的默认设置.在代码中垂直对齐左括号和右括号.为了防止在阅读代码时滚动源代码编辑器,每行代码或注释在1024*768的分辨率下尽量不超过一显示屏,如超过则应换行,换行后的代码应该缩进一个Tab. 当一行被分为几行时,将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的. 每一行上放置的语句避免超过一条,避免写 int

java04eclipse常见设置和java的第一个程序、命名规范、编码规范

一.java的第一个程序 *所有的java程序是写在.java为后缀的文本 *所有的java程序一定是写在class中   即写在类里面的 *所有的java程序的入口一定是main方法 *写代码 二.新建一个java项目 <1>新建一个java工程 <2>在src下建包 <3>在包下面新建java文件 <4>所有java代码是在写类里面的 <5>hello word  运行 <6>命名规范 *标识符:类名.包名.方法的名字,首字母.$

java编码规范

右括号") "与其后面的关键字之间,关键字与其后面的左括号"("或"{"之间,以及"}"与"{"之间,要以一个空格隔开:除". "外,所有二元操作符的前.后要加空格:在逗号后边加一个空格. 说明: 一个紧跟着括号的关键词应该被空格分开: 空白应该位于参数列表中逗号的后面: 所有的二元运算符,除了".",应该使用空格将之与操作数分开.一元操作符和操作数之间不应该加空格,

iOS:Cocoa编码规范 -[译]Coding Guidelines for Cocoa

--原文地址:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/FrameworkImpl.html Cocoa编码规范 --前言 用公共API开发一个Cocoa框架,插件,或其他可执行目标,里面的命名编写和规范不同于一般应用程序的开发.因为你开发出来东西是给开发者用的看的,并且他们不熟悉你的编程接口.这个时候API的命名约定就派上用场了,因为它使你的写

说说Python编码规范

前言 已有近两个月没有发表过文章了,前段时间外甥和女儿过来这边渡暑假,平常晚上和周末时间都陪着她们了,趁这个周末有空,再抽空再把这块拾起来.         这么久没写了,再次拿起键盘,想想,发表些什么呢,想起上次公司的代码评审委员会下周其中一个议题是关于Python编码规范的整理,那就趁热打铁,整理一份关于Python编码规范的文章,也为那些写Python的人,提供一些编码注意的一些事项或者说是参考吧. 编码规范的作用         规范故明思义,就是通过不断的总结,吸取好的点,从而形成的一

Android 编码规范

编码规范对于程序员而言,尤为重要,有以下几个原因: 一个软件的生命周期中,80%的花费在于维护: 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发来维护: 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码: 如果你将源码作为产品发布,就需要确认它是否被很好的打包并且清晰无误,一如你已构建的其他任何产品: 命名 1.包命名 包名规则:一个唯一的包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,如com.edu.gov.net.org等.包名的后续部分根据不同机构各

PSR : php编码规范

诸王混战 关于开发标准这块,可以说一直都是风格迥异,各家都有各家的玩法,民间更是个人玩个人的.目前我们国内比较出名的几个框架(Yii,Laravel) 都已经支持Composer并且加入了PHP-FIG(php框架程序组). 其中Composer的自动加载就支持PHP-FIG指定的PSR-0 和 PSR-4 规范来实现自动加载机制,并且Composer推荐使用PSR-4 PHP-FIG 这是一个自愿非正式的机构,但是就目前对我们的影响来看,可能都已经默认为一个公信组织了,的的确确制定了不少非常好