(微软一站式代码示例)编程规范(3)

2019-03-10 16:10

Page 7

CodeExample *pFirst, pSecond;

这种误写实际上等同于:

CodeExample *pFirst; CodeExample pSecond;

2.6 函数的声明和调用

函数或方法的名称,返回值,参数列表可以有多种形式。原则上应该都将这些置于同一行代码内。如果带有过多参数不能置于一行代码,可以进行换行:多个参数一行或者一个参数一行。将返回值置于函数或方法名称的同一行。例如,

单行格式:

// C++ function declaration sample:

HRESULTDoSomeFunctionCall(intparam1, intparam2, int *param3); // C++ / C# function call sample:

hr = DoSomeFunctionCall(param1, param2, param3); 'VB.NETfunction call sample:

hr = DoSomeFunctionCall(param1, param2, param3)

多行格式:

// C++ function declaration sample:

HRESULT DoSomeFunctionCall(intparam1, intparam2,int *param3, intparam4, intparam5);

// C++ / C# function call sample:

hr = DoSomeFunctionCall(param1, param2,param3, param4, param5);

'VB.NETfunction call sample:

hr = DoSomeFunctionCall(param1, param2,param3, _ param4, param5)

将参数列表置于多行代码时,每一个参数应该整齐排列于前一个参数的下方。第一个类型/参数对置于新行行首,并缩进一个制表符宽度。函数或方法调用时的参数列表同样需按照这一格式。

// C++sample:

HRESULT DoSomeFunctionCall(

? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)

Page 8

HWND hwnd, // You can comment parameters, too T1 param1, // Indicates something T2 param2, // Indicates something else T3 param3, // Indicates more T4 param4, // Indicates even more T5 param5); // You get the idea

// C++ / C# sample: hr = DoSomeFunctionCall( hwnd, param1, param2, param3, param4, param5);

'VB.NETsample:

hr = DoSomeFunctionCall( _ hwnd, _ param1, _ param2, _ param3, _ param4, _ param5)

?一定请将参数排序,并首先将输入参数分组,再将输出参数放置最后。在参数组内,按照能够帮助程序员输入正确值的原则来将参数排序。比如,如果一个函数带有2个参数, “left” 和 “right”,将 “left” 置于 “right” 之前,则它们的放置顺序符合其参数名。当设计一系列具有相同参数的函数时,在各函数内使用一致的顺序。比如,如果一个函数带有一个输入类型为句柄的参数作为第一参数,那么所有相关函数都应该将该输入句柄作为第一参数。

2.7 代码语句

?一定不要在同一行内放置一句以上的代码语句。这会使得调试器的单步调试变得更为困难。

Good:

// C++ / C#sample: a = 1; b = 2;

' VB.NETsample:

? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)

Page 9

If(IsAdministrator())Then Console.WriteLine(\) EndIf

Bad:

// C++ /C#sample: a = 1; b = 2;

' VB.NET sample:

If(IsAdministrator())Then Console.WriteLine(\)

2.8 枚举

?一定请将代表某些值集合的强类型参数,属性和返回值声明为枚举类型。

?一定请在合适的情况下尽量使用枚举类型,而不是静态常量或 “#define” 值。枚举类型是一个具有一个静态常量集合的结构体。如果遵守这些规范,定义枚举类型,而不是带有静态常量的结构体,您便会得到额外的编译器和反射支持。

Good:

// C++ sample: enum Color {

Red, Green, Blue };

// C# sample: publicenumColor {

Red, Green, Blue }

' VB.NET sample: PublicEnum Color Red Green Blue EndEnum

? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)

Page 10

Bad:

// C++ sample: constintRED= 0; constintGREEN = 1; constintBLUE=2;

#define RED 0 #define GREEN 1 #define BLUE 2

// C# sample:

publicstaticclassColor {

publicconst int Red = 0; publicconst int Green = 1; publicconst int Blue = 2; }

' VB.NET sample: PublicClass Color

PublicConst Red AsInteger = 0 PublicConst Green AsInteger = 1 PublicConst Blue AsInteger = 2 EndClass

?一定不要使用公开集合作为枚举(例如操作系统版本,您亲朋的姓名)。

?一定请为简单枚举提供一个0值枚举量,可以考虑将之命名为“None”。如果这个名称对于特定的枚举并不合适,可以自行定义为更准确的名称。

// C++ sample: enumCompression {

None = 0, GZip, Deflate };

// C# sample:

publicenumCompression {

None = 0, GZip, Deflate

? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)

Page 11

}

' VB.NET sample: PublicEnum Compression None = 0 GZip Deflate EndEnum

?一定不要在.NET中使用 Enum.IsDefined 来检查枚举范围。Enum.IsDefined有2个问题。首先,它加载反射和大量类型元数据,代价极其昂贵。第二,它存在版本的问题。

Good:

// C# sample:

if(c >Color.Black || c

thrownewArgumentOutOfRangeException(...); }

' VB.NET sample:

If(c > Color.Black Or c < Color.White)Then ThrowNew ArgumentOutOfRangeException(...); EndIf

Bad:

// C# sample:

if(!Enum.IsDefined(typeof(Color), c)) {

thrownew InvalidEnumArgumentException(...); }

' VB.NET sample:

IfNot [Enum].IsDefined(GetType(Color), c)Then ThrowNew ArgumentOutOfRangeException(...); EndIf

2.8.1 标志枚举

标志枚举用于对枚举值进行位运算的支持。标志枚举通常用于表示选项。

?一定要将 System.FlagsAttribute 应用于标志枚举。一定不要将此属性用于简单枚举。

? 2015 Microsoft Corporation. All rights reserved. All-In-One Code Framework (http://1code.codeplex.com)


(微软一站式代码示例)编程规范(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一年级语文综合实践活动教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: