MicrosoftC编码要求规范

上传人:cl****1 文档编号:497983723 上传时间:2022-07-17 格式:DOC 页数:79 大小:354.50KB
返回 下载 相关 举报
MicrosoftC编码要求规范_第1页
第1页 / 共79页
MicrosoftC编码要求规范_第2页
第2页 / 共79页
MicrosoftC编码要求规范_第3页
第3页 / 共79页
MicrosoftC编码要求规范_第4页
第4页 / 共79页
MicrosoftC编码要求规范_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《MicrosoftC编码要求规范》由会员分享,可在线阅读,更多相关《MicrosoftC编码要求规范(79页珍藏版)》请在金锄头文库上搜索。

1、wordMicrosoft C#编码规X本文档描述了微软一站式代码示例库项目组所采纳的关于本地 C+ 和 .NET C# 和VB.NET代码的编程风格指导规X。鸣谢本文档的每一章节都应该感谢Dan Ruder- 微软Principal Escalation Engineer 。Dan 对本文档进展了斟字酌句的查阅,并根据其20余年的编程经验提供了大量的珍贵评论 。我很荣幸能与他共事。 我同样感谢微软的四位经理,感谢他们对该项目的一贯支持。他们是Vivian Luo,Allen Ding,Felix Wu 和 Mei Liang。 同时,如果没有如下一站式代码示例库项目的关键成员的辛勤付出,本文

2、档必定不会具有现在的技术深度以与完整度,我在这里要感谢他们:Hongye SunJie WangJi ZhouMichael SunKira QianLinda LiuAllen Chen Yi-Lun LuoSteven ChengWen-Jun Zhang本文档局部章节参考自一些微软产品组的编程规X。感谢他们的慷慨共享。本编程规X在不断改善。如果您发现某些最优实践或者话题并没有涵盖在本文档中,请告知我们一站式示例代码库项目组 ,以不断充实改善本文档。我期待着您的参与。J声明本编程规X文档以“如是提供,无论明示或暗示都不包含任何形式保证,但并不限制适用于特殊目的的默认担保。 当您编写VC+/

3、VC#/VB.NET 代码时,敬请参考或使用本文档。但是,我们希望您能通过onecodemicrosoft.告知我们您正在使用本文档,或给出任何改良建议。目录1概览1122通用编程规X333556789141517263C+ 编程规X272729303434353637383940434450515255584.NET 编码规X6161616161656567697074747790文档1 概览本文档为一站式示例代码库项目组所使用的C+ 以与 .NET 编码规X 。该规X源自于产品开发过程中的经验,并在不断完善。如果您发现一些最优实践或者话题并没有涵盖在本文档中,请联系我们一站式示例代码库项目

4、组 ,以不断充实完善本文档。任何指导准如此都可能会众口难调。本规X的目的在于帮助社区开发者提高开发效率,减少代码中可能出现的bug,并增强代码的可维护性。万事开头难,采纳一个不熟悉的规X可能在初期会有一些棘手和困扰,但是这些不适应很快便会消失,它所带来的好处和优势很快便会显现,特别是在当您接手他人代码时。1.1 原如此和主旨高质量的代码示例往往具有如下特质:1. 易懂 代码示例必须易读且简单明确。它们必须能展示出重点所在。示例代码的相关局部应当易于重用。示例代码不可包含多余代码。它们必须带有相应文档说明。2. 正确性 示例代码必须正确展示出其欲告知使用者的重点。代码必须经过测试,且可以按照文档

5、描述进展编译和运行。3. 一致性 示例代码应该按照一致的编程风格和设计来保证代码易读。 同样的,不同代码示例之间也应当保持一致的风格和设计,使使用者能够很轻松的结合使用它们。一致性将我们一站式示例代码库优良的品质形象传递给使用者,展示出我们对于细节的追求。4. 流行性 代码示例应当展示现行的编程实践,例如使用 Unicode,错误处理,防御式编程以与可移植性。示例代码应当使用当前推荐的运行时库和API函数,以与推荐的项目和生成设置。5. 可靠性 代码示例必须符合法律,隐私和政策标准和规X。不允许展示入侵性或低质的编程实践,不允许永久改变机器状态。所有的安装和执行过程必须可以被撤销。6. 安全性

6、 - 示例代码应该展示如何使用安全的编程实践 :例如最低权限原如此,使用运行时库函数的安全版本,以与SDL推荐的项目设置。 合理使用编程实践,设计和语言特性决定了示例代码是否可以很好满足上述特性。本编程规X致力于帮助您创建代码示例以使使用者能够作为最优实践来效仿和学习。1.2 术语在整个文档中,会有一些对于标准和实践的推荐和建议。一些实践是非常重要的,必须严格执行,另一些指导准如此并不一定处处适用,但是会在特定的场景下带来益处。为了清楚陈述规X和实践的意图,我们会使用如下术语。一定请.该规X或实践在任何情况下都应该遵守。如果您认为您的应用是例外,如此可能不适用。该规X用于减少bug。一定不要.

7、不允许应用该规X或实践。您应该.该规X和实践适用于大多数情况。该规X用于统一编程风格,保持一致和清晰的风格。您不应该.不应该应用该规X或实践,除非有合理的理由。您可以该标准和规X您可以按需应用。该规X可用于编程风格,但不总是有益的。2 通用编程规X这些通用编程规X适用于所有语言 它们对代码风格,格式和结构提供了全局通用的指导。2.1 明确性和一致性一定请确保代码的明确性,易读性和透明性。编程规X致力于确保代码是易懂和易维护的。没有什么胜于清晰、简洁、自描述的代码。一定请确保 一旦应用了某编程规X,需在所有代码中应用,以保持一致性。 2.2 格式和风格一定不要使用制表符。不同的文字编辑器使用不同

8、的空格来生成制表符 ,这就带来了格式混乱。所有代码都应该使用4个空格来表示缩进。可以配置Visual Studio 文字编辑器,以空格代替制表符 。您应该 限制一行代码的最大长度。 过长的代码降低了代码易读性 。为了提高易读性,将代码长度设置为78列。假如78列太窄,可以设置为86或者90。Visual C# 示例:一定请在您的代码编辑器中使用定宽字体,例如 Courier New。2.3 库的使用一定不要 引用不必要的库,包括不必要的头文件,或引用不必要的程序集。注重细节能够减少项目生成时间,最小化出错几率, 并给读者一个良好的印象。2.4 全局变量一定请 尽量少用全局变量。 为了正确的使用

9、全局变量,一般是将它们作为参数传入函数。永远不要在函数或类内部直接引用全局变量,因为这会引起一个副作用:在调用者不知情的情况下改变了全局变量的状态。这对于静态变量同样适用。如果您需要修改全局变量,您应该将其作为一个输出参数,或返回其一份全局变量的拷贝。 2.5 变量的声明和初始化一定请在最小的,包含该局部变量的作用域块内声明它。一般,如果语言允许,就仅在使用前声明它们,否如此就在作用域块的顶端声明。一定请 在声明变量时初始化它们。一定请 在语言允许的情况下,将局部变量的声明和初始化或赋值置于同一行代码内。这减少了代码的垂直空间,确保了变量不会处在未初始化的状态。/ C# sample:stri

10、ng name = myObject.Name;int val = time.Hours; 一定不要 在同一行中声明多个变量 。推荐每行只包含一句声明,这样有利于添加注释,也减少歧义。例如 Visual C+示例,Good:CodeExample *pFirst = NULL; / Pointer of the first element.CodeExample *pSecond = NULL; / Pointer of the second element.Bad:CodeExample *pFirst, *pSecond;后一个代码示例经常被误写为:CodeExample *pFirst,

11、 pSecond;这种误写实际上等同于:CodeExample *pFirst;CodeExample pSecond;2.6 函数的声明和调用函数或方法的名称,返回值,参数列表可以有多种形式。原如此上应该都将这些置于同一行代码内。如果带有过多参数不能置于一行代码,可以进展换行:多个参数一行或者一个参数一行。将返回值置于函数或方法名称的同一行。例如,单行格式:/ C# function call sample:hr = DoSomeFunctionCallparam1, param2, param3;多行格式:/ C# function call sample:hr = DoSomeFunct

12、ionCallparam1, param2, param3, param4, param5;将参数列表置于多行代码时,每一个参数应该整齐排列于前一个参数的下方。第一个类型/参数对置于新行行首,并缩进一个制表符宽度。函数或方法调用时的参数列表同样需按照这一格式。 / C+ / C# sample:hr = DoSomeFunctionCall hwnd, param1, param2, param3, param4, param5;一定请 将参数排序,并首先将输入参数分组,再将输出参数放置最后。在参数组内,按照能够帮助程序员输入正确值的原如此来将参数排序。比如,如果一个函数带有2个参数, “le

13、ft 和 “right ,将 “left 置于 “right 之前,如此它们的放置顺序符合其参数名。当设计一系列具有一样参数的函数时,在各函数内使用一致的顺序。比如,如果一个函数带有一个输入类型为句柄的参数作为第一参数,那么所有相关函数都应该将该输入句柄作为第一参数。2.7 代码语句一定不要 在同一行内放置一句以上的代码语句。 这会使得调试器的单步调试变得更为困难。Good:/ C# sample:a = 1;b = 2;Bad:/ C# sample:a = 1; b = 2;2.8 枚举一定请 将代表某些值集合的强类型参数,属性和返回值声明为枚举类型。一定请在适宜的情况下尽量使用枚举类型,

14、而不是静态常量或 “#define 值 。枚举类型是一个具有一个静态常量集合的结构体。如果遵守这些规X,定义枚举类型,而不是带有静态常量的结构体,您便会得到额外的编译器和反射支持。Good:/ C# sample:publicenumColor Red, Green, BlueBad:/ C# sample:publicstaticclassColorpublicconst int Red = 0;publicconst int Green = 1;publicconst int Blue = 2;一定不要 使用公开集合作为枚举 例如操作系统版本,您亲朋的某某。一定请 为简单枚举提供一个0值枚举量,可以考虑将之命名为 “None。如果这个名称对于特定的枚举并不适宜,可以自行定义为更准确的名称。/ C# sample:publicenumpression None = 0, GZip, Deflate一定不要 在.NET中使用 Enum.IsDefined 来检查枚举X围。Enum.IsDefin

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

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号