收藏 分销(赏)

C命名标准规范专业资料.doc

上传人:a199****6536 文档编号:2775758 上传时间:2024-06-05 格式:DOC 页数:45 大小:273.04KB 下载积分:12 金币
下载 相关 举报
C命名标准规范专业资料.doc_第1页
第1页 / 共45页
C命名标准规范专业资料.doc_第2页
第2页 / 共45页


点击查看更多>>
资源描述
C#编程规范 Version 2.0目录 第一章 概述 4 规范制定原则 4 术语定义 4 Pascal 大小写 4 Camel 大小写 4 文献命名组织 4 1.3.1文献命名 4 1.3.2文献注释 4 第二章 代码外观 6 2.1 列宽 6 2.2 换行 6 2.3 缩进 6 2.4 空行 6 2.5 空格 6 2.6 括号 - () 7 2.7 花括号 - {} 7 第三章 程序注释 9 3.4 注释概述 9 3.2 文档型注释 9 3.3 类c注释 10 3.4 单行注释 10 3.5 注释标签 10 第四章 声明 14 4.1 每行声明数 14 4.2 初始化 14 4.3 位置 14 4.4 类和接口声明 15 4.5 字段声明 15 第五章 命名规范 16 5.1 命名概述 16 5.2 大小写规则 16 5.3 缩写 17 5.4 命名空间 17 5.5 类 18 5.6 接口 18 5.7 属性 (Attribute) 19 5.8 枚举 (Enum) 19 5.9 参数 19 5.10 办法 20 5.11 属性 (property) 20 5.12 事件 21 5.13 常量 (const) 22 5.14 字段 23 5.15 静态字段 23 5.16 集合 24 5.17 措词 24 第六章 语句 26 6.1 每行一种语句 26 6.2 复合语句 26 6.3 return 语句 26 6.4 if、if-else、if else-if 语句 26 6.4 for、foreach 语句 27 6.5 while 语句 27 6.7. do - while 语句 28 6.8. switch - case 语句 28 6.9. try - catch 语句 28 6.10. using 块语句 29 6.11. goto 语句 29 第七章 控件命名规则 30 7.1 命名办法 30 7.2 重要控件名简写对照表 30 第八章 其她 30 8.1 表达式 30 8.2 类型转换 30 附录一:匈牙利命名法 31 第一章 概述 规范制定原则 1 以便代码交流和维护。 2 不影响编码效率,不与大众习惯冲突。 3 使代码更美观、阅读更以便。 4 使代码逻辑更清晰、更易于理解。 术语定义 Pascal 大小写 将标记符首字母和背面连接每个单词首字母都大写。可以对三字符或更多字符标记符使用Pascal 大小写。例如: BackColor Camel 大小写 标记符首字母小写,而每个背面连接单词首字母都大写。例如: backColor 文献命名组织 1.3.1文献命名 1 文献名遵从Pascal命名法,无特殊状况,扩展名小写。 2 使用统一而又通用文献扩展名: C# 类 .cs 1.3.2文献注释 1 在每个文献头必要包括如下注释阐明 /*---------------------------------------------------------------- // Copyright (C) 北京大陆康腾科技有限公司 // 版权所有。 // // 文献名: // 文献功能描述: // // // 创立标记: // // 修改标记: // 修改描述: // // 修改标记: // 修改描述: //----------------------------------------------------------------*/ 文献功能描述只需简述,详细详情在类注释中描述。 创立标记和修改标记由创立或修改人员拼音或英文名加日期构成。如: 小新 -2-10 一天内有各种修改只需做一种在注释阐明中做一种修改标记就够了。 在所有代码修改处加上修改标记注释。 第二章 代码外观 2.1 列宽 代码列宽控制在110字符左右。 2.2 换行 当表达式超过或即将超过规定列宽,遵循如下规则进行换行 1、在逗号后换行。 2、在操作符前换行。 3、规则1优先于规则2。 当以上规则会导致代码混乱时候自己采用更灵活换行规则。 2.3 缩进 Visual Studio.Net默认设立即可。需要统一设立某一文档格式时,点击编辑——》高档——》设立文档格式。或Ctrl + E,D组合键。 2.4 空行 空行是为了将逻辑上有关联代码分块,以便提高代码可阅读性。 在如下状况下使用两个空行 1、接口和类定义之间。 2、枚举和类定义之间。 3、类与类定义之间。 在如下状况下使用一种空行 1、办法与办法、属性与属性之间。 2、办法中变量声明与语句之间。 3、办法与办法之间。 4、办法中不同逻辑块之间。   5、办法中返回语句与其她语句之间。 6、属性与办法、属性与字段、办法与字段之间。 7、注释与它注释语句间不空行,但与其她语句间空一行。 2.5 空格 在如下状况中要使用到空格 1、核心字和左括符 “(” 应当用空格隔开。如 while (true) 注旨在办法名和左括符 “(” 之间不要使用空格,这样有助于辨认代码中办法调用与核心字。 2、 各种参数用逗号隔开,每个逗号后都应加一种空格。 3、 除了 . 之外,所有二元操作符都应用空格与它们操作数隔开。一元操作符、++及--与操作 数间不需要空格。如 a += c + d; a = (a + b) / (c * d); while (d++ = s++) { n++; } PrintSize(“size is “ + size + “\n”); 4、语句中表达式之间用空格隔开。如 for (expr1; expr2; expr3) 2.6 括号 - () 1、左括号“(” 不要紧靠核心字,中间用一种空格隔开。 2、左括号“(” 与办法名之间不要添加任何空格。 3、没有必要话不要在返回语句中使用()。如 if (condition) Array.Remove(1) return 1 2.7 花括号 - {} 1、左花括号 “{” 放于核心字或办法名下一行并与之对齐。如 if (condition) { } public int Add(int x,int y) { } 2、左花括号 “{” 要与相应右花括号 “}”对齐。 3、普通状况下左花括号 “{”单独成行,不与任何语句并列一行。 4、if、while、do语句后一定要使用{},虽然{}号中为空或只有一条语句。如 if (somevalue == 1) { somevalue = 2; } 5、右花括号 “}” 后建议加一种注释以便于以便找到与之相应 {。如 while (1) { if (valid) { } // if valid else { } // not valid } // end forever 第三章 程序注释 3.4 注释概述 1、修改代码时,总是使代码周边注释保持最新。 2、在每个例程开始,提供原则注释样本以批示例程用途、假设和限制很有协助。注释样本应当是解释它为什么存在和可以做什么简短简介. 3、避免在代码行末尾添加注释;行尾注释使代码更难阅读。但是在批注变量声明时,行尾注释是适当;在这种状况下,将所有行尾注释在公共制表位处对齐。 4 、避免杂乱注释,如一整行星号。而是应当使用空白将注释同代码分开。 5 、避免在块注释周边加上印刷框。这样看起来也许很美丽,但是难于维护。 6 、在布置发布之前,移除所有暂时或无关注释,以避免在日后维护工作中产生混乱。 7 、如果需要用注释来解释复杂代码节,请检查此代码以拟定与否应当重写它。尽一切也许不注释难以理解代码,而应当重写它。尽管普通不应当为了使代码更简朴以便于人们使用而牺牲性能,但必要保持性能和可维护性之间平衡。 8 、在编写注释时使用完整句子。注释应当阐明代码,而不应当增长多义性。 9 、在编写代码时就注释,由于后来很也许没有时间这样做。此外,如果有机会复查已编写代码,在今天看来很明显东西六周后来或许就不明显了。 10 、避免多余或不恰当注释,如幽默不重要备注。 11、使用注释来解释代码意图。它们不应作为代码联机翻译。 12、注释代码中不十分明显任何内容。 13 、为了防止问题重复浮现,对错误修复和解决办法代码总是使用注释,特别是在团队环境中。 14 、对由循环和逻辑分支构成代码使用注释。这些是协助源代码读者重要方面。 15 、在整个应用程序中,使用品有一致标点和构造统同样式来构造注释。 16 、用空白将注释同注释分隔符分开。在没有颜色提示状况下查看注释时,这样做会使注释很明显且容易被找到。 17 、在所有代码修改处加上修改标记注释。 18 、为了是层次清晰,在闭合右花括号后注释该闭合所相应起点。 namespace Cont.MIS { } // namespace Cont.MIS 3.2 文档型注释 该类注释采用.Net已定义好Xml标签来标记,在声明接口、类、办法、属性、字段都应当使用该类注释,以便代码完毕后直接生成代码文档,让别人更好理解代码实现和接口。如 ///<summary>MyMethod is a method in the MyClass class. ///<para>Here's how you could make a second paragraph in a description. ///<see cref="System.Console.WriteLine"/> ///for information about output statements. ///</para> ///<seealso cref="MyClass.Main"/> ///</summary> public static void MyMethod(int Int1) { } 3.3 类c注释 该类注释用于 1 不再使用代码。 2 暂时测试屏蔽某些代码。 用法 /* [修改标记] [修改因素] . . . (the source code ) */ 3.4 单行注释 该类注释用于 1 办法内代码注释。如变量声明、代码或代码段解释。注释示例: // 注释语句 private int number; 2 办法内变量声明或花括号后注释,注释示例: if ( 1 == 1) // always true { statement; } // always true 3.5 注释标签 标签 用法 作用 <c> c>错误!超链接引用无效。</c> text 但愿将其批示为代码文本。 为您提供了一种将阐明中文本标记为代码办法。使用 <code> 将多行批示为代码 <para> <para>错误!超链接引用无效。</para> content段落文本。 用于诸如 <remarks> 或 <returns> 等标记内,使您得以将构造添加到文本中。 <param> <param name='错误!超链接引用无效。'>错误!超链接引用无效。</param> name 为办法参数名。将此名称用单引号括起来 (' ')。 应当用于办法声明注释中,以描述办法一种参数。 <paramref> <paramref name="错误!超链接引用无效。"/> name 要引用参数名。将此名称用双引号括起来 (" ")。 <paramref> 标记为您提供了一种批示词为参数办法。可以解决 XML 文献,从而用某种独特办法格式化该参数。 <see> <see 错误!超链接引用无效。错误!超链接引用无效。"member"/> cref = "member" 对可以通过当前编译环境进行调用成员或字段引用。编译器检查到给定代码元素存在后,将 member 传递给输出 XML 中元素名。必要将 member 括在双引号 (" ") 中。 使您得以从文本内指定链接。使用 <seealso> 批示但愿在“请参阅”一节中浮现文本。 <seealso> <seealso 错误!超链接引用无效。错误!超链接引用无效。"member"/> cref = "member" 对可以通过当前编译环境进行调用成员或字段引用。编译器检查到给定代码元素存在后,将 member 传递给输出 XML 中元素名。必要将 member 括在双引号 (" ") 中 使您得以指定但愿在“请参阅”一节中浮现文本。使用 <see> 从文本 <example> <example>错误!超链接引用无效。</example> description 代码示例阐明。 使用 <example> 标记可以指定用法或其她库成员示例。普通状况下,这将涉及到 <code> 标记使用。 <code> <code>错误!超链接引用无效。</code> content 为但愿将其标记为代码文本。 记为您提供了一种将多行批示为代码办法。使用 <c> 批示应将阐明中文本标记为代码 <summary> <summary>错误!超链接引用无效。</summary> 此处description 为对象摘要。 应当用于描述类型成员。使用 <remarks> 以提供关于类型自身信息。 <exception> <exception 错误!超链接引用无效。错误!超链接引用无效。"member">错误!超链接引用无效。</exception> cref = "member" 对可从当前编译环境中获取异常引用。编译器检查到给定异常存在后,将 member 转换为输出 XML 中规范化元素名。必要将 member 括在双引号 (" ") 中。 description 阐明。 <exception> 标记使您可以指定类可以引起异常。 <include> <include file='错误!超链接引用无效。' path='错误!超链接引用无效。[@错误!超链接引用无效。="错误!超链接引用无效。"]' /> filename 包括文档文献名。该文献名可用途径加以限定。将 filename 括在单引号中 (' ')。 Tagpath:filename 中指向标记名标记途径。将此途径括在单引号中 (' ')。 name 注释前边标记中名称阐明符;名称具备一种 id。 id 位于注释之前标记 id。将此 id 括在双引号中 (" ")。 <include> 标记使您得以引用描述源代码中类型和成员另一文献中注释。这是除了将文档注释直接置于源代码文献中之外另一种可选办法。 <include> 标记使用 XML XPath 语法。关于自定义 <include> 用法,请参阅 XPath 文档。 <list> <list type="bullet" | "number" | "table"> <listheader> <term>错误!超链接引用无效。</term> <description>错误!超链接引用无效。</description> </listheader> <item> <term>错误!超链接引用无效。</term> <description>错误!超链接引用无效。</description> </item> </list> term 定义项,该项将在 text 中定义。 description 目符号列表或编号列表中项或者 term 定义。 <listheader> 块用于定义表或定义列表中标题行。定义表时,只需为标题中项提供一种项。 列表中每一项用 <item> 块指定。创立定义列表时,既需要指定 term 也需要指定 text。但是,对于表、项目符号列表或编号列表,只需为 text 提供一种项。 列表或表所拥有 <item> 块数可以依照需要而定。 <permission> <permission 错误!超链接引用无效。错误!超链接引用无效。"member">错误!超链接引用无效。</permission> cref = "member" 对可以通过当前编译环境进行调用成员或字段引用。编译器检查到给定代码元素存在后,将 member 转换为输出 XML 中规范化元素名。必要将 member 括在双引号 (" ") 中。 description 成员访问阐明。 <permission> 标记使您得以将成员访问记入文档。System.Security.PermissionSet 使您得以指定对成员访问。 <remarks> <remarks>错误!超链接引用无效。</remarks> description 成员阐明。 <remarks> 标记是可以指定关于类或其她类型概述信息位置。<summary> 是可以描述该类型成员位置。 <returns> <returns>错误!超链接引用无效。</returns> description 返回值阐明。 <returns> 标记应当用于办法声明注释,以描述返回值。 <value> <value>错误!超链接引用无效。</value> property-description 属性阐明。 <value> 标记使您得以描述属性。请注意,当在 Visual Studio .NET 开发环境中通过代码向导添加属性时,它将会为新属性添加 <summary> 标记。然后,应当手动添加 <value> 标记以描述该属性所示值。 第四章 声明 4.1 每行声明数 一行只建议作一种声明,并按字母顺序排列。如 int level; //推荐 int size; //推荐 int x,y; //不推荐 4.2 初始化 建议在变量声明时就对其做初始化。 4.3 位置 变量建议置于块开始处,不要总是在第一次使用它们地方做声明。如 void MyMethod() { int int1 = 0; // beginning of method block if (condition) { int int2 = 0; // beginning of "if" block ... } } 但是也有一种例外 for (int i = 0;i < maxLoops;i++) { ... } 应避免不同层次间变量重名,如 int count; ... void MyMethod() { if (condition) { int count = 0; // 避免 ... } ... } 4.4 类和接口声明 1 在办法名与其后左括号间没有任何空格。 2 左花括号 “{” 出当前声明下行并与之对齐,单独成行。 3 办法间用一种空行隔开。 4.5 字段声明 不要使用是 public 或 protected 实例字段。如果避免将字段直接公开给开发人员,可以更轻松地对类进行版本控制,因素是在维护二进制兼容性时字段不能被更改为属性。考虑为字段提供 get 和set 属性访问器,而不是使它们成为公共。 get 和 set 属性访问器中可执行代码存在使得可以进行后续改进,如在使用属性或者得到属性更改告知时依照需要创立对象。下面代码示例阐释带有get 和 set 属性访问器私有实例字段对的使用。 示例: public class Control:Component { private int handle; public int Handle { get { return handle; } } } 第五章 命名规范 5.1 命名概述 名称应当阐明“什么”而不是“如何”。通过避免使用公开基本实现(它们会发生变化)名称,可以保存简化复杂性抽象层。例如,可以使用 GetNextStudent(),而不是 GetNextArrayElement()。 命名原则是: 选取对的名称时困难也许表白需要进一步分析或定义项目。使名称足够长以便有一定意义,并且足够短以避免冗长。唯一名称在编程上仅用于将各项区别开。体现力强名称是为了协助人们阅读;因而,提供人们可以理解名称是故意义。但是,请保证选取名称符适当用语言规则和原则。 如下几点是推荐命名办法。 1、避免容易被主观解释难懂名称,如方面名 AnalyzeThis(),或者属性名 xxK8。这样名称会导致多义性。 2、在类属性名称中包括类名是多余,如 Book.BookTitle。而是应当使用 Book.Title。 3、只要适当,在变量名末尾或开头加计算限定符(Avg、Sum、Min、Max、Index)。 4、在变量名中使用互补对,如 min/max、begin/end 和 open/close。 5、布尔变量名应当包括 Is,这意味着 Yes/No 或 True/False 值,如 fileIsFound。 6、在命名状态变量时,避免使用诸如 Flag 术语。状态变量不同于布尔变量地方是它可以具备两个以上也许值。不是使用 documentFlag,而是使用更具描述性名称,如 documentFormatType。 (此项只供参照) 7、虽然对于也许仅出当前几种代码行中生存期很短变量,依然使用故意义名称。仅对于短循环索引使用单字母变量名,如 i 或 j。 也许状况下,尽量不要使用原义数字或原义字符串,如 For i = 1 To 7。而是使用命名常数,如 For i = 1 To NUM_DAYS_IN_WEEK 以便于维护和理解。 5.2 大小写规则 大写 标记符中所有字母都大写。仅对于由两个或者更少字母构成标记符使用该商定。例如: System.IO System.Web.UI 下表汇总了大写规则,并提供了不同类型标记符示例。 标记符 大小写 示例 类 Pascal AppDomain 枚举类型 Pascal ErrorLevel 枚举值 Pascal FatalError 事件 Pascal ValueChange 异常类 Pascal WebException 注意 总是以 Exception 后缀结尾。 只读静态字段 Pascal RedValue 接口 Pascal IDisposable 注意 总是以 I 前缀开始。 办法 Pascal ToString 命名空间 Pascal System.Drawing 属性 Pascal BackColor 公共实例字段 Pascal RedValue 注意 很少使用。属性优于使用公共实例字段。 受保护实例字段 Camel redValue 注意 很少使用。属性优于使用受保护实例字段。 私有实例字段 Camel redValue 参数 Camel typeName 办法内变量 Camel backColor 5.3 缩写 为了避免混淆和保证跨语言交互操作,请遵循关于区缩写使用下列规则: 1 不要将缩写或缩略形式用作标记符名称构成某些。例如,使用 GetWindow,而不要使用 GetWin。 2 不要使用计算机领域中未被普遍接受缩写。 3 在恰当时候,使用众所周知缩写替代冗长词组名称。例如,用 UI 作为 User Interface 缩 写,用 OLAP 作为 On-line Analytical Processing 缩写。 4在使用缩写时,对于超过两个字符长度缩写请使用 Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 HTMLButton。但是,应当大写仅有两个字符缩写,如,System.IO,而不是 System.Io。 5 不要在标记符或参数名称中使用缩写。如果必要使用缩写,对于由多于两个字符所构成缩写请 使用Camel 大小写,虽然这和单词原则缩写相冲突。 5.4 命名空间 1、命名命名空间时普通性规则是使用公司名称,后跟技术名称和可选功能与设计,如下所示。 CompanyName.TechnologyName[.Feature][.Design] 例如: namespace Langchao.Procurement //浪潮公司采购单管理系统 namespace Langchao.Procurement.DataRules //浪潮公司采购单管理系统业务规则模块 2、命名空间使用Pascal大小写,用逗号分隔开。 3、TechnologyName 指是该项目英文缩写,或软件名。 4、命名空间和类不能使用同样名字。例如,有一种类被命名为Debug后,就不要再使用Debug作为一种名称空间名。 5.5 类 1、使用 Pascal 大小写。 2、用名词或名词短语命名类。 3、使用全称避免缩写,除非缩写已是一种公认商定,如URL、HTML 4 、不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。 5 、不要使用下划线字符 (_)。 6 、有时候需要提供以字母 I 开始类名称,虽然该类不是接口。只要 I 是作为类名称构成某些整个单词第一种字母,这便是恰当。例如,类名称 IdentityStore 是恰当。在恰本地方,使用复合单词命名派生类。派生类名称第二个某些应当是基类名称。例如,ApplicationException 对于从名为 Exception 类派生类是恰当名称,因素ApplicationException 是一种Exception。请在应用该规则时进行合理判断。例如,Button 对于从 Control 派生类是恰当名称。尽管按钮是一种控件,但是将 Control 作为类名称一某些将使名称不必要地加长。 public class FileStream public class Button public class String 5.6 接口 如下规则概述接口命名指南: 1、用名词或名词短语,或者描述行为形容词命名接口。例如,接口名称 IComponent 使用描述性 名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。 2、使用 Pascal 大小写。 3、少用缩写。 4、给接口名称加上字母 I 前缀,以批示该类型为接口。在定义类/接口对(其中类是接口原则 实现)时使用相似名称。两个名称区别应当只是接口名称上有字母 I 前缀。 5、不要使用下划线字符 (_)。 6、当类是接口原则执行时,定义这一对类/接口组合就要使用相似名称。两个名称不同之处 只是接口名前有一种I前缀。 如下是对的命名接口示例。 public interface IServiceProvider public interface IFormatable 如下代码示例阐释如何定义 IComponent 接口及其原则实现 Component 类。 public interface IComponent { // Implementation code goes here. } public class Component:IComponent { // Implementation code goes here. } 5.7 属性 (Attribute) 应当总是将后缀 Attribute 添加到自定义属性类。如下是对的命名属性类示例。 public class ObsoleteAttribute { } 5.8 枚举 (Enum) 枚举 (Enum) 值类型从 Enum 类继承。如下规则概述枚举命名指南: 1 对于 Enum 类型和值名称使用 Pascal 大小写。 2 少用缩写。 3 不要在 Enum 类型名称上使用 Enum 后缀。 4 对大多数 Enum 类型使用单数名称,但是对作为位域 Enum 类型使用复数名称。 5 总是将 FlagsAttribute 添加到位域 Enum 类型。 5.9 参数 如下规则概述参数命名指南: 1、使用描述性参数名称。参数名称应当具备足够描述性,以便参数名称及其类型可用于在大多数状况下拟定它含义。 2、对参数名称使用 Camel 大小写。 3、使用描述参数含义名称,而不要使用描述参数类型名称。开发工具将提供关于参数类型故意义信息。因而, 通过描述意义,可以更好地使用参数名称。少用基于类型参数名称,仅在适合使用它们地方使用它们。 4、不要使用保存参数。保存参数是专用参数,如果需要,可以在将来版本中公开它们。相反,如果在类库将来版本中需要更多数据,请为办法添加新重载。 5、不要给参数名称加匈牙利语类型表达法前缀。 如下是对的命名参数示例。 Type GetType(string typeName) string Format(string format,args() As object) 5.10 办法 如下规则概述办法命名指南: 1 使用动词或动词短语命名办法。 2 使用 Pascal 大小写。 3 如下是对的命名办法实例。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 品牌综合 > 行业标准/行业规范

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服