微软.NET 编码规范
本文档描述了微软一站式代码示例库项目组所采纳的关于本地
C++ 和 .NET (C# 和 VB.NET)代码的编程风格指导规范。
鸣谢
本文档的每一章节都应该感谢 Dan Ruder - 微软 Principal Escalation Engineer 。 Dan 对本文档进行了斟字酌
句的查阅,并根据其 20 余年的编程经验提供了大量的珍贵评论 。我很荣幸能与他共事。
我同样感谢微软的四位经理,感谢他们对该项目的一贯支持。他们是 Vivian Luo,Allen Ding,Felix Wu 和
Mei Liang。
同时,如果没有如下一站式代码示例库项目的关键成员的辛勤付出,本文档必定不会具有现在的技术深
度以及完整度,我在这里要感谢他们:
Hongye Sun Jie Wang Ji Zhou Michael Sun Kira Qian Linda Liu
Allen Chen Yi-Lun Luo Steven Cheng Wen-Jun Zhang
本文档部分章节参考自一些微软产品组的编程规范。感谢他们的慷慨共享。
本编程规范在不断改善。如果您发现某些最佳实践或者话题并没有涵盖在本文档中,请告知我们一站式
示例代码库项目组 ,以不断充实改善本文档。我期待着您的参与。
声明
本编程规范文档以“如是”提供,无论明示或暗示都不包含任何形式保证,但并不限制适用于特殊目的
的默认担保。
当您编写 VC++/VC#/VB.NET 代码时,敬请参考或使用本文档。但是,我们希望您能通过
onecode@microsoft.com 告知我们您正在使用本文档,或给出任何改进建议。
目录
1 概览...........................................................................................................................................1
1.1 原则和主旨................................................................................................................................................1
1.2 术语............................................................................................................................................................2
2 通用编程规范............................................................................................................................3
2.1 明确和一致................................................................................................................................................3
2.2 格式和风格................................................................................................................................................3
2.3 库的使用....................................................................................................................................................5
2.4 全局变量....................................................................................................................................................5
2.5 变量的声明和初始化................................................................................................................................6
2.6 函数的声明和调用....................................................................................................................................7
2.7 语句............................................................................................................................................................8
2.8 枚举............................................................................................................................................................9
2.9 空格 .........................................................................................................................................................14
2.10 大括号......................................................................................................................................................15
2.11 注释 .........................................................................................................................................................17
2.12 代码块......................................................................................................................................................26
3 C++ 编程规范...........................................................................................................................27
3.1 编译器选项..............................................................................................................................................27
3.2 文件和结构..............................................................................................................................................29
3.3 命名规范..................................................................................................................................................30
3.4 指针 .........................................................................................................................................................34
3.5 常量 .........................................................................................................................................................34
3.6 类型转换..................................................................................................................................................35
3.7 Sizeof........................................................................................................................................................36
3.8 字符串......................................................................................................................................................37
3.9 数组 .........................................................................................................................................................38
3.10 宏 .............................................................................................................................................................39
3.11 函数 .........................................................................................................................................................40
3.12 结构体......................................................................................................................................................43
3.13 类 .............................................................................................................................................................44
3.14 COM .........................................................................................................................................................50
3.15 动态分配..................................................................................................................................................51
3.16 错误和异常..............................................................................................................................................52
3.17 资源清理..................................................................................................................................................55
3.18 控制流......................................................................................................................................................58
4 .NET 编码规范 .........................................................................................................................61
4.1 类库开发设计规范..................................................................................................................................61
4.2 文件和结构..............................................................................................................................................61
4.3 程序集属性..............................................................................................................................................61
4.4 命名规范..................................................................................................................................................61
4.5 常量 .........................................................................................................................................................65
4.6 字符串......................................................................................................................................................65
4.7 数组和集合..............................................................................................................................................67
4.8 结构体......................................................................................................................................................69
4.9 类 .............................................................................................................................................................70
4.10 命名空间..................................................................................................................................................74
4.11 错误和异常..............................................................................................................................................74
4.12 资源清理..................................................................................................................................................77
4.13 交互操作..................................................................................................................................................90
Page 1
© 2020 Microsoft Corporation. All rights reserved.
1 概览
本文档为一站式示例代码库项目组所使用的 C++ 以及 .NET 编码规范 。该规范源自于产品开发过程中的经
验,并在不断完善。如果您发现一些最佳实践或者话题并没有涵盖在本文档中,请联系我们一站式示例
代码库项目组 ,以不断充实完善本文档。
任何指导准则都可能会众口难调。本规范的目的在于帮助社区开发者提高开发效率,减少代码中可能出
现的 bug,并增强代码的可维护性。万事开头难,采纳一个不熟悉的规范可能在初期会有一些棘手和困扰,
但是这些不适应很快便会消失,它所带来的好处和优势很快便会显现,特别是在当您接手他人代码时。
1.1 原则和主旨
高质量的代码示例往往具有如下特质:
1. 易懂 – 代码示例必须易读且简单明确。它们必须能展示出重点所在。示例代码的相关部分应当易
于重用。示例代码不可包含多余代码。它们必须带有相应文档说明。
2. 正确性 – 示例代码必须正确展示出其欲告知使用者的重点。代码必须经过测试,且可以按照文档
描述进行编译和运行。
3. 一致性 – 示例代码应该按照一致的编程风格和设计来保证代码易读。 同样的,不同代码示例之间
也应当保持一致的风格和设计,使使用者能够很轻松的结合使用它们。一致性将我们一站式示例
代码库优良的品质形象传递给使用者,展示出我们对于细节的追求。
4. 流行性 – 代码示例应当展示现行的编程实践,例如使用 Unicode,错误处理,防御式编程以及可
移植性。示例代码应当使用当前推荐的运行时库和 API 函数,以及推荐的项目和生成设置。