1、C#编码规范文件编号:DE-CS_C#密级:普通级文件状态: 草稿 发布 修改当前版本:Version 3.0上海华和得易信息技术发展有限公司完成日期:2006.11.3. 组织级文档上海华和得易信息技术发展有限公司DE-CS_C# DealEasy 2005 i文档控制文档更新记录版本号 更新日期 作者 部门 职务 备注1.0 2005.1.12 伍洲 开发部2.01 2005.11.10 胡梓芳 开发部2.02 2005.11.16 胡梓芳 开发部2.03 2005.11.17 胡梓芳 开发部2.04 2005.11.22 胡梓芳 开发部2.11 2005.12.09 胡梓芳 开发部2.1
2、2 2006.04.10 胡梓芳 开发部3.0 2006.10.30 伍洲 开发事业部 SE 提交 SEPG 发布文档审核记录版本号 审核日期 审核者 部门 职务 备注1.0 2005.1.12 殷栋 开发部 部长2.01 2005.11.10 殷栋 开发部 部长2.02 2005.11.16 殷栋 开发部 部长2.03 2005.11.17 殷栋 开发部 部长2.04 2005.11.22 殷栋 开发部 部长2.11 2005.12.09 殷栋 开发部 部长2.12 2006.04.10 伍洲 开发部3.0 2006.11.3 葛、任、殷 开发事业部 总监、部长 审核通过上海华和得易信息技术
3、发展有限公司DE-CS_C# DealEasy 2005 ii目录1. 命名 .11.1. 一般规则 .11.1.1 大写标识符约定 .11.1.2 区别大小写 .11.1.3 缩写的使用 .21.1.4 措词 .31.2. 命名空间 .31.3. 类命名 .31.4. 接口命名 .51.5. 变量命名 .51.6. 属性命名 .61.7. 枚举类型命名 .71.8. 静态字段命名 .71.9. 参数命名 .81.10. 方法命名 .91.11. 事件命名 .101.12. 控件命名 .112. 类布局 .142.1. 基本格式 .142.1.1 缩进的使用 .142.1.2 括号的使用 .1
4、52.1.3 空格的使用 .152.1.4 代码行长度限制 .172.1.5 类成员排列顺序 .182.2. 画面类的布局 .182.3. 非画面类的布局 .213. 注 释 .223.1. 一般的注释 .223.2. 文件的注释 .253.3. 类的注释 .253.4. 函数的注释 .253.5. 变量和常量的注释 .26上海华和得易信息技术发展有限公司DE-CS_C# DealEasy 2005 11. 命名注:带示例为正确示例。带示例为错误示例1.1. 一般规则1.1.1 大写标识符约定使用下面的三种大写标识符约定。1) Pascal 大小写将标识符的首字母和后面连接的每个单词的首字母都
5、大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。示例:2) Camel 大小写标识符的首字母小写,而每个后面连接的单词的首字母都大写。示例:3) 大写标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使用该 约定。示例:1.1.2 区别大小写为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下列规则:1) 不要创建仅是名称大小写有区别的组件或类示例:上海华和得易信息技术发展有限公司DE-CS_C# DealEasy 2005 21.1.3 缩写的使用为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则:1) 不要将缩写或缩略形式用作标识符名
6、称的组成部分。示例:2) 不要使用计算机领域中未被普遍接受的缩写。3) 在适当的时候,使用众所周知的缩写替换冗长的词组名称。示例:4) No 不作为缩写,用大写的“N”,小写的“o”表示。示例:1.1.4 措词1) 避免使用与常用的 .NET Framework 命名空间重复的类名称。示例:1.2. 命名空间命名命名空间时的一般性规则是使用公司名称,后跟技术名称和可选的功能与设计,如下所示。CompanyName.SystemName.Feature.Design示例:上海华和得易信息技术发展有限公司DE-CS_C# DealEasy 2005 31) 给命名空间名称加上公司名称或者其他知名商
7、标的前缀可以避免两个已经发布的命名空间名称相同的可能性。2) 应当对命名空间使用 Pascal 大小写,并用句点分隔逻辑组件。3) 不要为命名空间和类使用相同的名称。例如,不要既提供 Debug 命名空间也提供 Debug 类。1.3. 类命名以下规则概述命名类的指南: 1) 使用名词或名词短语命名类。2) 使用 Pascal 大小写 3) 少用缩写。4) 不要使用下划线字符 (_)。5) 不要使用类型前缀。使用类名称 FileStream,而不是 CFileStream。6) 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便
8、是适当的。例如,类名称 IdentityStore 就是适当的。 7) 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。示例:8) 当类位于某一层时,需要在类名前后加上相关层的名字作为该类名的前缀或者后缀。建议使用以下 Domain架构层次 前缀 后缀 说明BusinessFacade F Facade 业务访问层Common / Data、Info、Model 业务实体DataA
9、ccess / DAO、Entity 数据逻辑访问层Blo / Blo 业务逻辑访问层Rule / Rule、Logic 逻辑层上海华和得易信息技术发展有限公司DE-CS_C# DealEasy 2005 4示例:1.4. 接口命名以下规则概述接口的命名指南:1) 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。2) 使用 Pascal 大小写。3) 少用缩写。4) 不要使用下划线字符 (_)。5) 给接口名称加上字母 I
10、前缀,以指示该类型为接口。6) 在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该在接口名称上加字母 I 前缀,第二个字母大写。 接口的示例:定义 IComponent 接口及其标准实现 Component 类的示例:上海华和得易信息技术发展有限公司DE-CS_C# DealEasy 2005 51.5. 变量命名以下规则概述命名变量的指南:1) 使用名词或名词短语命名属性。2) 成员变量中公有、保护变量使用 Pascal 大小写。私有变量使用下划线+ Camel 大小写。3) 常量名表示 Table 名时,采用 Con_TableName_Table 的格式。示例
11、:常量名表示 Field 名时,采用 Con_FieldName_Field 的格式。示例:4) 局部变量建议在必要的最小的作用域内使用。计数器变量使用 i,j,k 来表示。5) 如果在同一个函数体中,当同一层次类的实例不超过一个的情况下,对象的命名应该用该类所处层的 Domain 代替。示例:类名 对象名AccessoryFacade facadeAccessoryDAO daoAccessoryData data1.6. 属性命名1) 使用名词或名词短语命名属性。上海华和得易信息技术发展有限公司DE-CS_C# DealEasy 2005 62) 考虑用与属性的基础类型相同的名称创建属性。
12、例如,如果声明名为 Color 的属性,则属性的类型同样应该是 Color。请参见本主题内下文中的示例。 示例:3) 使用 Pascal 大小写.示例:1.7. 枚举类型命名枚举 (Enum) 值类型从 Enum 类继承。以下规则概述枚举的命名指南:1) 对于 Enum 类型和值名称使用 Pascal 大小写。2) 少用缩写。3) 不要使用下划线字符 (_)。 4) 不要在 Enum 类型名称上使用 Enum 后缀。示例:5) 对大多数 Enum 类型使用单数名称,但是对作为位域的 Enum 类型使用复数名称。总是将 FlagsAttribute 添加到位域 Enum 类型。位域通常用于由可组合出现的元素组成的列表。示例:上海华和得易信息技术发展有限公司DE-CS_C# DealEasy 2005 7如果要表示一个同时拥有 Admin 和 User2 个权限的枚举,其对应的 Value 为 3。1.8. 静态字段命名以下规则概述静态字段的命名指南: 1) 使用名词、名词短语或者名词的缩写命名静态字段。示例:2) 使用 Pascal 大小写。示例:3) 建议尽可能使用静态属性而不是公共静态字段。