Page 2
5. 可靠性 – 代码示例必须符合法律,隐私和政策标准和规范。不允许展示入侵性或低质的编程实践,
不允许永久改变机器状态。所有的安装和执行过程必须可以被撤销。
6. 安全性 - 示例代码应该展示如何使用安全的编程实践:例如最低权限原则,使用运行时库函数的
安全版本,以及SDL推荐的项目设置。
合理使用编程实践,设计和语言特性决定了示例代码是否可以很好满足上述特性。本编程规范致力于帮助您创建代码示例以使使用者能够作为最佳实践来效仿和学习。
1.2 术语
在整个文档中,会有一些对于标准和实践的推荐和建议。一些实践是非常重要的,必须严格执行,另一些指导准则并不一定处处适用,但是会在特定的场景下带来益处。为了清楚陈述规范和实践的意图,我们会使用如下术语。 术语 ?一定请... ?一定不要... ?您应该... ?您不应该.. ?您可以…
意图 该规范或实践在任何情况下都应该遵守。如果您认为您的应用是例外,则可能不适用。 不允许应用该规范或实践。 该规范和实践适用于大多数情况。 不应该应用该规范或实践,除非有合理的理由。 该标准和规范您可以按需应用。 该规范用于统一编程风格,保持一致和清晰的风格。 该规范可用于编程风格,但不总是有益的。 理由 该规范用于减少bug。
? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)
Page 3
2 通用编程规范
这些通用编程规范适用于所有语言–它们对代码风格,格式和结构提供了全局通用的指导。
2.1 明确性和一致性
?一定请确保代码的明确性,易读性和透明性。编程规范致力于确保代码是易懂和易维护的。没有什么胜于清晰、简洁、自描述的代码。
?一定请确保一旦应用了某编程规范,需在所有代码中应用,以保持一致性。
2.2 格式和风格
?一定不要使用制表符。不同的文字编辑器使用不同的空格来生成制表符,这就带来了格式混乱。所有代码都应该使用4个空格来表示缩进。
可以配置Visual Studio 文字编辑器,以空格代替制表符。
? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)
Page 4
?您应该限制一行代码的最大长度。过长的代码降低了代码易读性。为了提高易读性,将代码长度设置为78列。若78列太窄,可以设置为86或者90。
Visual C++ sample:
Visual C# 示例:
Visual Basicsample:
? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)
Page 5
?一定请在您的代码编辑器中使用定宽字体,例如 Courier New。
2.3 库的使用
?一定不要引用不必要的库,包括不必要的头文件,或引用不必要的程序集。注重细节能够减少项目生成时间,最小化出错几率,并给读者一个良好的印象。
2.4 全局变量
?一定请尽量少用全局变量。为了正确的使用全局变量,一般是将它们作为参数传入函数。永远不要在函数或类内部直接引用全局变量,因为这会引起一个副作用:在调用者不知情的情况下改变了全局变量
? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)
Page 6
的状态。这对于静态变量同样适用。如果您需要修改全局变量,您应该将其作为一个输出参数,或返回其一份全局变量的拷贝。
2.5 变量的声明和初始化
?一定请在最小的,包含该局部变量的作用域块内声明它。一般,如果语言允许,就仅在使用前声明它们,否则就在作用域块的顶端声明。
?一定请在声明变量时初始化它们。
?一定请在语言允许的情况下,将局部变量的声明和初始化或赋值置于同一行代码内。这减少了代码的垂直空间,确保了变量不会处在未初始化的状态。
// C++sample:
HANDLE hToken = NULL; PSID pIntegritySid = NULL;
STARTUPINFO si = { sizeof(si) }; PROCESS_INFORMATION pi = { 0 };
// C#sample:
string name = myObject.Name; int val = time.Hours;
' VB.NETsample:
Dim name AsString = myObject.Name Dim val AsInteger = 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;
后一个代码示例经常被误写为:
? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)