很全的C_开发编码规范.doc

上传人:hw****26 文档编号:3558830 上传时间:2019-06-04 格式:DOC 页数:18 大小:367.50KB
下载 相关 举报
很全的C_开发编码规范.doc_第1页
第1页 / 共18页
很全的C_开发编码规范.doc_第2页
第2页 / 共18页
很全的C_开发编码规范.doc_第3页
第3页 / 共18页
很全的C_开发编码规范.doc_第4页
第4页 / 共18页
很全的C_开发编码规范.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、C#编程规范 作者:第 1 页 2019/5/211C#编程规范目录1 前言 .21.1 编写目的 .21.2 范围 .22. 规范内容 .22.1 代码格式 .22.2 命名指南 .32.2.1 大写样式 .32.2.2 区分大小写 .42.2.3 缩写 .52.2.4 措词 .52.2.5 避免类型名称混淆 .72.2.6 命名空间命名指南 .82.2.7 类命名指南 .92.2.8 类成员变量命名指南 .102.2.9 接口命名指南 .102.2.10 属性命名指南 .102.2.11 枚举类型命名指南 .112.2.12 静态字段命名指南 .112.2.13 参数命名指南 .112.2

2、.14 方法命名指南 .122.2.15 属性命名指南 .122.2.16 事件命名指南 .132.3 注释(Comment)规范 .142.3.1 模块(类)注释规范 .142.3.2 类属性注释规范 .152.3.3 方法注释规范 .152.3.4 代码间注释规范 .153 成功的模式 .163.1 有效地使用这些标准 .163.2 其它导向成功代码的因素 .17C#编程规范 作者:第 2 页 2019/5/2121 前言1.1 编写目的为了保证企业编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。1.2 范围适用于企业所有基于.NET 平台的软件开发工作。2. 规范内

3、容2.1 代码格式 所有的缩进为 4 个空格,使用 VS.NET 的默认设置。 在代码中垂直对齐左括号和右括号。if(x=0)Response.Write(“用户编号必须输入!“);不允许以下情况:if(x=0) Response.Write(“用户编号必须输入!“);或者:if(x=0)Response.Write(“用户编号必须输入!“);C#编程规范 作者:第 3 页 2019/5/213 为了防止在阅读代码时不得不滚动源代码编辑器,每行代码或注释在 1024*800 的显示频率下不得超过一显示屏 当一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不

4、完整的。 每一行上放置的语句避免超过一条。 在大多数运算符之前和之后使用空格,这样做时不会改变代码的意图却可以使代码容易阅读。例:int j = i + k; 而不应写为int j=i+k; 将大的复杂代码节分为较小的、易于理解的模块。2.2 命名指南2.2.1 大写样式使用下面的三种大写标识符约定。Pascal 大小写将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。例如:BackColorCamel 大小写标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backColor大写标识符中的所有字母都大写。仅对于由两个或者

5、更少字母组成的标识符使用该约定。例如:System.IOSystem.Web.UI可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。C#编程规范 作者:第 4 页 2019/5/214下表汇总了大写规则,并提供了不同类型的标识符的示例。标识符 大小写 示例类 Pascal AppDomain枚举类型 Pascal ErrorLevel枚举值 Pascal FatalError事件 Pascal ValueChange异常类 Pascal WebException 注意 总是以 Excep

6、tion 后缀结尾。只读的静态字段 Pascal RedValue接口 Pascal IDisposable 注意 总是以 I 前缀开始。方法 Pascal ToString命名空间 Pascal System.Drawing参数 Camel typeName属性 Pascal BackColor受保护的实例字段Camel redValue 注意 很少使用。属性优于使用受保护的实例字段。公共实例字段 Pascal RedValue 注意 很少使用。属性优于使用公共实例字段。2.2.2 区分大小写为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下列规则: 不要使用要求区分大小写的名

7、称。对于区分大小写和不区分大小写的语言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这种情况。 不要创建仅是名称大小写有区别的两个命名空间。例如,不区分大小写的语言无法区分以下两个命名空间声明。 namespace ee.cummings;namespace Ee.Cummings; 不要创建具有仅是大小写有区别的参数名称的函数。下面的示例是不正确的。 void MyFunction(string a, string A) 不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例中,Point p 和 POINT

8、p 是不适当的类型名称,原因是它们仅是大小写有区别。 System.Windows.Forms.Point pSystem.Windows.Forms.POINT pC#编程规范 作者:第 5 页 2019/5/215 不要创建具有仅是大小写有区别的属性名称的类型。在下面的示例中,int Color 和 int COLOR 是不适当的属性名称,原因是它们仅是大小写有区别。 int Color get, setint COLOR get, set 不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中,calculate 和 Calculate 是不适当的方法名称,原因是它们仅是大小写有区

9、别。 void calculate()void Calculate()2.2.3 缩写为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则: 不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 GetWindow,而不要使用 GetWin。 不要使用计算机领域中未被普遍接受的缩写。 在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为 User Interface 的缩写,用 OLAP 作为 On-line Analytical Processing 的缩写。 在使用缩写时,对于超过两个字符长度的缩写请使用 Pascal 大小写或 Camel 大小写。例

10、如,使用 HtmlButton 或 HTMLButton。但是,应当大写仅有两个字符的缩写,如,System.IO,而不是 System.Io。 不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成的缩写请使用 Camel 大小写,虽然这和单词的标准缩写相冲突。 2.2.4 措词避免使用与常用的 .NET 框架命名空间重复的类名称。例如,不要将以下任何名称用作类名称:System、Collections、Forms 或 UI。有关 .NET 框架命名空间的列表,请参阅类库。另外,避免使用和以下关键字冲突的标识符。C#编程规范 作者:第 6 页 2019/5/216Add

11、Handler AddressOf Alias And AnsiAs Assembly Auto Base BooleanByRef Byte ByVal Call CaseCatch CBool CByte CChar CDateCDec CDbl Char CInt ClassCLng CObj Const CShort CSngCStr CType Date Decimal DeclareDefault Delegate Dim Do DoubleEach Else ElseIf End EnumErase Error Event Exit ExternalSourceFalse Fin

12、alize Finally Float ForFriend Function Get GetType GotoHandles If Implements Imports InInherits Integer Interface Is LetLib Like Long Loop MeMod Module MustInherit MustOverride MyBaseMyClass Namespace New Next NotNothing NotInheritable NotOverridable Object OnOption Optional Or Overloads Overridable

13、Overrides ParamArray Preserve Private PropertyProtected Public RaiseEvent ReadOnly ReDimRegion REM RemoveHandler Resume ReturnSelect Set Shadows Shared ShortSingle Static Step Stop StringStructure Sub SyncLock Then ThrowTo True Try TypeOf UnicodeUntil volatile When While WithWithEvents WriteOnly Xor

14、 eval extendsinstanceof package var 2.2.5 避免类型名称混淆不同的编程语言使用不同的术语标识基本托管类型。类库设计人员必须避免使用语言特定的术语。请遵循本节中描述的规则以避免类型名称混淆。C#编程规范 作者:第 7 页 2019/5/217使用描述类型的含义的名称,而不是描述类型的名称。如果参数除了其类型之外没有任何语义含义,那么在这种罕见的情况下请使用一般性名称。例如,支持将各种数据类型写入到流中的类可以有以下方法。void Write(double value);void Write(float value);void Write(long valu

15、e);void Write(int value);void Write(short value);不要创建语言特定的方法名称,如下面的示例所示。void Write(double doubleValue);void Write(float floatValue);void Write(long longValue);void Write(int intValue);void Write(short shortValue);如果有必要为每个基本数据类型创建唯一命名的方法,那么在这种极为罕见的情况下请使用通用类型名称。下表列出基本数据类型名称和它们的通用替换。C# 类型名称Visual Basic

16、 类型名称JScript 类型名称Visual C+ 类型名称Ilasm.exe 表示形式通用类型名称sbyte SByte sByte char int8 SBytebyte Byte byte unsigned char unsigned int8 Byteshort Short short short int16 Int16ushort UInt16 ushort unsigned shortunsigned int16 UInt16int Integer int int int32 Int32uint UInt32 uint unsigned int unsigned int32 UI

17、nt32long Long long _int64 int64 Int64ulong UInt64 ulong unsigned _int64unsigned int64 UInt64float Single float float float32 Singledouble Double double double float64 Doublebool Boolean boolean bool bool Booleanchar Char char wchar_t char Charstring String string String string Stringobject Object ob

18、ject Object object Object例如,支持将从流读取各种数据类型的类可以有以下方法。double ReadDouble();float ReadSingle();long ReadInt64();int ReadInt32();short ReadInt16();C#编程规范 作者:第 8 页 2019/5/218前面的示例优于下面的语言特定的替换。double ReadDouble();float ReadFloat();long ReadLong();int ReadInt();short ReadShort();2.2.6 命名空间命名指南命名命名空间时的一般性规则是使

19、用公司名称,后跟技术名称和可选的功能与设计,如下所示。CompanyName.TechnologyName.Feature.Design例如:Microsoft.MediaMicrosoft.Media.Design给命名空间名称加上公司名称或者其他知名商标的前缀可以避免两个已经发布的命名空间名称相同的可能性。例如,Microsoft.Office 是由 Microsoft 提供的 Office Automation Classes 的一个适当的前缀。在第二级分层名称上使用稳定的、公认的技术名称。将组织层次架构用作命名空间层次架构的基础。命名一个命名空间,该命名空间包含为具有 .Design

20、后缀的基命名空间提供设计时功能的类型。例如,System.Windows.Forms.Design 命名空间包含用于设计基于 System.Windows.Forms 的应用程序的设计器和相关的类。嵌套的命名空间应当在包含它的命名空间中的类型上有依赖项。例如,System.Web.UI.Design 中的类依赖于 System.Web.UI 中的类。但是,System.Web.UI 中的类不依赖于 System.UI.Design 中的类。应当对命名空间使用 Pascal 大小写,并用句点分隔逻辑组件,如 Microsoft.Office.PowerPoint 中所示。如果您的商标使用非传统的

21、大小写,请遵循您的商标所定义的大小写,即使它与规定的 Pascal 大小写相背离。例如,命名空间 NeXT.WebObjects 和 ee.cummings 阐释了对于 Pascal 大小写规则的适当背离。如果在语义上适当,使用复数命名空间名称。例如,使用 System.Collections 而不是 System.Collection。此规则的例外是商标名称和缩写。例如,使用 System.IO 而不是 System.IOs。不要为命名空间和类使用相同的名称。例如,不要既提供 Debug 命名空间也提供 Debug 类。最后,请注意命名空间名称不必非得与程序集名称相似。例如,如果命名程序集

22、C#编程规范 作者:第 9 页 2019/5/219MyCompany.MyTechnology.dll,它没有必要非得包含 MyCompany.MyTechnology 命名空间。2.2.7 类命名指南以下规则概述命名类的指南: 使用名词或名词短语命名类。 使用 Pascal 大小写。 少用缩写。 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。 不要使用下划线字符 (_)。 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 Id

23、entityStore 是适当的。 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。 下面是正确命名的类的示例。public class FileStreampublic class Buttonpub

24、lic class String2.2.8 类成员变量命名指南类成员变量加 m_ 前缀,如: int m_ContentLength。C#编程规范 作者:第 10 页 2019/5/21102.2.9 接口命名指南以下规则概述接口的命名指南: 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。 使用 Pascal 大小写。 少用缩写。 给接口名称加上字母 I 前缀,以指示该类型为接口。 在定义类/接口对(其中类是接口的标准实现

25、)时使用相似的名称。两个名称的区别应该只是接口名称上有字母 I 前缀。 不要使用下划线字符 (_)。 以下是正确命名的接口的示例。public interface IServiceProviderpublic interface IFormatable以下代码示例阐释如何定义 IComponent 接口及其标准实现 Component 类。public interface IComponent public class Component: IComponent / Implementation code goes here.2.2.10 属性命名指南应该总是将后缀 Attribute 添加到自定义属性类。以下是正确命名的属性类的示例。public class ObsoleteAttribute2.2.11 枚举类型命名指南枚举 (Enum) 值类型从 Enum 类继承。以下规则概述枚举的命名指南: 对于 Enum 类型和值名称使用 Pascal 大小写。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。