一站式示例代码库编程规范 作者:葛佳亮 翻译:蒋里京 本文档描述了微软一站式代码示例库项目组所采纳的关于本地 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 类 .............................................................................................................................. 错误!未定义书签。 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
1 概览
本文档为一站式示例代码库项目组所使用的C++以及 .NET编码规范。该规范源自于产品开发过程中的经验,并在不断完善。如果您发现一些最佳实践或者话题并没有涵盖在本文档中,请联系我们一站式示例代码库项目组,以不断充实完善本文档。
任何指导准则都可能会众口难调。本规范的目的在于帮助社区开发者提高开发效率,减少代码中可能出现的bug,并增强代码的可维护性。万事开头难,采纳一个不熟悉的规范可能在初期会有一些棘手和困扰,但是这些不适应很快便会消失,它所带来的好处和优势很快便会显现,特别是在当您接手他人代码时。
1.1 原则和主旨
高质量的代码示例往往具有如下特质:
1. 易懂 – 代码示例必须易读且简单明确。它们必须能展示出重点所在。示例代码的相关部分应当易
于重用。示例代码不可包含多余代码。它们必须带有相应文档说明。
2. 正确性 – 示例代码必须正确展示出其欲告知使用者的重点。代码必须经过测试,且可以按照文档
描述进行编译和运行。
3. 一致性 – 示例代码应该按照一致的编程风格和设计来保证代码易读。同样的,不同代码示例之间
也应当保持一致的风格和设计,使使用者能够很轻松的结合使用它们。一致性将我们一站式示例代码库优良的品质形象传递给使用者,展示出我们对于细节的追求。
4. 流行性 – 代码示例应当展示现行的编程实践,例如使用 Unicode,错误处理,防御式编程以及可
移植性。示例代码应当使用当前推荐的运行时库和API函数,以及推荐的项目和生成设置。
? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)