软件代码编写规范

软件代码编写规范
软件代码编写规范

软件代码编写规范

草稿

2005.2

1 命名规则

https://www.360docs.net/doc/a15540092.html,命名规则

一致的命名模式是托管类库中可预知性与可发现性最重要的元素之一。对这些命名指南广泛的使用和理解将消除许多最常见的用户问题。本主题提供 .NET Framework 类型的命名指南。对于每个类型,还应该注意关于大写样式、区分大小写和措词的一些通用规则。

1.1.1大写样式

描述用于在类库中命名标识符的 Pascal 大小写、Camel 大小写和全部大写样式。

使用下面的三种大写标识符约定。

●Pascal 大小写

将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。例如:

B ack

C olor

●Camel 大小写

标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:

b ack C olor

●大写

标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使用该约定。例如:

System.IO

System.Web.UI

可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。

下表汇总了大写规则,并提供了不同类型的标识符的示例。

标识符大小写示例

类Pascal AppDomain

枚举类型Pascal ErrorLevel

枚举值Pascal FatalError

事件Pascal ValueChange

异常类Pascal WebException

注意总是以Exception后缀结尾。

只读的静态字段Pascal RedValue

接口Pascal IDisposable

注意总是以 I 前缀开始。

方法Pascal ToString

命名空间Pascal System.Drawing

参数Camel typeName

属性Pascal BackColor

受保护的实例字段Camel redValue

注意很少使用。属性优于使用受保护的实例字段。

公共实例字段Pascal RedValue

注意很少使用。属性优于使用公共实例字段。

1.1.2区分大小写

为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下列规则:

?不要使用要求区分大小写的名称。对于区分大小写和不区分大小写的语言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这种情况。

?不要创建仅是名称大小写有区别的两个命名空间。例如,不区分大小写的语言无法区分以下两个命名空间声明。

?namespace ee.cummings;

namespace Ee.Cummings;

?不要创建具有仅是大小写有区别的参数名称的函数。下面的示例是不正确的。

void MyFunction(string a, string A)

?不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例中,Point p 和 POINT p 是不适当的类型名称,原因是它们仅在大小写方面有区别。

?System.Windows.Forms.Point p

System.Windows.Forms.POINT p

?不要创建具有仅是大小写有区别的属性名称的类型。在下面的示例中,int Color 和 int COLOR 是不适当的属性名称,原因是它们仅在大小写方面有区别。

?int Color {get, set}

int COLOR {get, set}

?不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中,calculate 和 Calculate 是不适当的方法名称,原因是它们仅在大小写方面有区别。

?void calculate()

void Calculate()

1.1.3缩写

为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则:

?不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 GetWindow,而不要使用 GetWin。

?不要使用计算机领域中未被普遍接受的缩写。

?在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为 User Interface 的缩写,用 OLAP 作为 On-line Analytical Processing 的缩写。

?在使用缩写时,对于超过两个字符长度的缩写,请使用 Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 htmlButton。但是,应当大写仅有两个字符的缩写,如,System.IO,而不是 System.Io。

?不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成的缩写请使用Camel 大小写,虽然这和单词的标准缩写相冲突。

1.1.4措词

避免使用与常用的 .NET Framework 命名空间重复的类名称。例如,不要将以下任何名称用作类名称:System、Collections、Forms或UI。有关 .NET Framework 命名空间的列表,请参见类库。

另外,避免使用和以下关键字冲突的标识符。

AddHandler AddressOf Alias And Ansi

As Assembly Auto Base Boolean

ByRef Byte ByVal Call Case

Catch CBool CByte CChar CDate

CDec CDbl Char CInt Class

CLng CObj Const CShort CSng

CStr CType Date Decimal Declare

Default

1.1.5避免类型名称混淆

语言

不同的编程语言使用不同的术语标识基本托管类型。类库设计人员必须避免使用语言特定的术语。请遵循本节中描述的规则以避免类型名称混淆。

使用描述类型的含义的名称,而不是描述类型的名称。如果参数除了其类型之外没有任何语义含义,那么在这种罕见的情况下请使用一般性名称。例如,支持将各种数据类型写入到流中的类可以有以下方法。

[Visual Basic]

Sub Write(value As Double);

Sub Write(value As Single);

Sub Write(value As Long);

Sub Write(value As Integer);

Sub Write(value As Short);

[C#]

void Write(double value);

void Write(float value);

void Write(long value);

void Write(int value);

void Write(short value);

不要创建语言特定的方法名称,如下面的示例所示。

[Visual Basic]

Sub Write(doubleValue As Double);

Sub Write(singleValue As Single);

Sub Write(longValue As Long);

Sub Write(integerValue As Integer);

Sub Write(shortValue As Short);

[C#]

void Write(double doubleValue);

void Write(float floatValue);

void Write(long longValue);

void Write(int intValue);

void Write(short shortValue);

如果有必要为每个基本数据类型创建唯一命名的方法,那么在这种极为罕见的情况下请使用通用类型名称。下表列出基本数据类型名称和它们的通用替换。

C# 类型名称Visual Basic 类型

名称JScript 类型名称 Visual C++ 类型名

Ilasm.exe 表示形式通用类型名称

sbyte SByte sByte char int8SByte byte Byte byte unsigned char unsigned int8Byte short Short short short int16Int16 ushort UInt16ushort unsigned short unsigned int16UInt16 int Integer int int int32Int32 uint UInt32uint unsigned int unsigned int32UInt32 long Long long__int64int64Int64 ulong UInt64ulong unsigned __int64unsigned int64UInt64 float Single float float float32Single double Double double double float64Double bool Boolean boolean bool bool Boolean char Char char wchar_t char Char string String string String string String object Object object Object object Object 例如,支持将从流读取各种数据类型的类可以有以下方法。

[Visual Basic]

ReadDouble()As Double

ReadSingle()As Single

ReadInt64()As Long

ReadInt32()As Integer

ReadInt16()As Short

[C#]

double ReadDouble();

float ReadSingle();

long ReadInt64();

int ReadInt32();

short ReadInt16();

上面的示例优先于下面的语言特定的替代方法。

[Visual Basic]

ReadDouble()As Double

ReadSingle()As Single

ReadLong()As Long

ReadInteger()As Integer

ReadShort()As Short

[C#]

double ReadDouble();

float ReadFloat();

long ReadLong();

int ReadInt();

short ReadShort();

1.1.6命名空间命名指南

命名命名空间时的一般性规则是使用公司名称,后跟技术名称和可选的功能与设计,如下所示。

CompanyName.TechnologyName[.Feature][.Design]

例如:

Microsoft.Media

Microsoft.Media.Design

给命名空间名称加上公司名称或者其他知名商标的前缀可以避免两个已经发布的命名空间名称相同的可能性。例如,Microsoft.Office 是由 Microsoft 提供的 Office Automation Classes 的一个适当的前缀。

在第二级分层名称上使用稳定的、公认的技术名称。将组织层次架构用作命名空间层次架构的基础。命名一个命名空间,该命名空间包含为具有 .Design 后缀的基命名空间提供设计时功能的类型。例如,System.Windows.Forms.Design 命名空间包含用于设计基于 System.Windows.Forms 的应用程序的设计器和相关的类。

嵌套的命名空间应当在包含它的命名空间中的类型上有依赖项。例如,System.Web.UI.Design 中的类依赖于

System.Web.UI 中的类。但是,System.Web.UI中的类不依赖于System.Web.UI.Design中的类。

应当对命名空间使用Pascal 大小写,并用句点分隔逻辑组件,如 Microsoft.Office.PowerPoint 中所示。如果您的商标使用非传统的大小写,请遵循您的商标所定义的大小写,即使它与规定的 Pascal 大小写相背离。例如,命名空间NeXT.WebObjects 和 ee.cummings 阐释了对于 Pascal 大小写规则的适当背离。

如果在语义上适当,使用复数命名空间名称。例如,使用 System.Collections而不是 System.Collection。此规则的例外是商标名称和缩写。例如,使用 System.IO 而不是 System.IOs。

不要为命名空间和类使用相同的名称。例如,不要既提供 Debug 命名空间也提供 Debug 类。

最后,请注意命名空间名称不必非得与程序集名称相似。例如,如果命名程序集 MyCompany.MyTechnology.dll,它没有必要非得包含 MyCompany.MyTechnology 命名空间。

推荐使用的命名空间

ISCAS.IEL.MES.ChangLian.MaterBalance

IEL.MES.ChangLian.MaterialBalance

1.1.7类命名指南

以下规则概述命名类的指南:

?使用名词或名词短语命名类。

?使用Pascal 大小写。

?少用缩写。

?不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。

?不要使用下划线字符 (_)。

?有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适当的。

在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。

下面是正确命名的类的示例。

[Visual Basic]

Public Class FileStream

Public Class Button

Public Class String

[C#]

public class FileStream

public class Button

public class String

1.1.8接口命名指南

以下规则概述接口的命名指南:

用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。

使用 Pascal 大小写。

少用缩写。

给接口名称加上字母 I 前缀,以指示该类型为接口。

在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该只是接口名称上有字母 I 前缀。不要使用下划线字符 (_)。

以下是正确命名的接口的示例。

[Visual Basic]

Public Interface IServiceProvider

Public Interface IFormatable

[C#]

public interface IServiceProvider

public interface IFormatable

以下代码示例阐释如何定义 IComponent 接口及其标准实现 Component 类。

[Visual Basic]

Public Interface IComponent

' Implementation code goes here.

End Interface

Public Class Component

Implements IComponent

' Implementation code goes here.

End Class

[C#]

public interface IComponent

{

// Implementation code goes here.

}

public class Component: IComponent

{

// Implementation code goes here.

}

1.1.9属性命名指南

应该总是将后缀 Attribute 添加到自定义属性类。以下是正确命名的属性类的示例。

[Visual Basic]

Public Class ObsoleteAttribute

[C#]

public class ObsoleteAttribute{}

1.1.10枚举类型命名指南

枚举 (Enum) 值类型从 Enum 类继承。以下规则概述枚举的命名指南:

?对于Enum 类型和值名称使用Pascal 大小写。

?少用缩写。

?不要在Enum类型名称上使用 Enum 后缀。

?对大多数Enum类型使用单数名称,但是对作为位域的Enum类型使用复数名称。

总是将 FlagsAttribute 添加到位域 Enum 类型。

1.1.11静态字段命名指南

以下规则概述静态字段的命名指南:

?使用名词、名词短语或者名词的缩写命名静态字段。

?使用Pascal 大小写。

?不要在静态字段名称中使用匈牙利语表示法的前缀。

?建议尽可能使用静态属性而不是公共静态字段。

1.1.12参数命名指南

必须仔细遵守这些参数的命名指南,这非常重要,因为提供上下文相关帮助和类浏览功能的可视化设计工具会在设计器中对用户显示方法参数名称。以下规则概述参数的命名指南:

?对参数名称使用Camel 大小写。

?使用描述性参数名称。参数名称应当具有足够的描述性,以便参数的名称及其类型可用于在大多数情况下确定它的含义。例如,提供上下文相关帮助的可视化设计工具会按开发人员键入的实际内容显示方法参数。在这种情况下,方法参数名称的表述必须清楚明白,开发人员才能提供正确的参数。

?使用描述参数的含义的名称,而不要使用描述参数的类型的名称。开发工具将提供有关参数的类型的有意义的信息。因此,通过描述意义,可以更好地使用参数的名称。少用基于类型的参数名称,仅在适合使用它们的地方使用它们。

?不要使用保留的参数。保留的参数是专用参数,如果需要,可以在未来的版本中公开它们。相反,如果在类库的未来版本中需要更多的数据,请为方法添加新的重载。

?不要给参数名称加匈牙利语类型表示法的前缀。

以下是正确命名的参数的示例。

[Visual Basic]

GetType(typeName As String)As Type

Format(format As String, args()As object)As String

[C#]

Type GetType(string typeName)

string Format(string format, object[] args)

1.1.13方法命名指南

以下规则概述方法的命名指南:

?使用动词或动词短语命名方法。

?使用Pascal 大小写。

以下是正确命名的方法的实例。

RemoveAll()

GetCharArray()

Invoke()

1.1.14属性命名指南

以下规则概述属性的命名指南:

?使用名词或名词短语命名属性。

?使用Pascal 大小写。

?不要使用匈牙利语表示法。

?考虑用与属性的基础类型相同的名称创建属性。例如,如果声明名为 Color 的属性,则属性的类型同样应该是Color。请参见本主题内下文中的示例。

以下代码示例阐释正确的属性命名。

[Visual Basic]

Public Class SampleClass

Public Property BackColor As Color

' Code for Get and Set accessors goes here.

End Property

End Class

[C#]

public class SampleClass

{

public Color BackColor

软件代码编写规范

{

// Code for Get and Set accessors goes here.

}

}

以下代码示例阐释提供其名称与类型相同的属性。

[Visual Basic]

Public Enum Color

' Insert code for Enum here.

End Enum

Public Class Control

Public Property Color As Color

Get

' Insert code here.

End Get

Set

' Insert code here.

End Set

End Property

End Class

[C#]

public enum Color

{

// Insert code for Enum here.

}

public class Control

{

public Color Color

{

get {// Insert code here.}

set {// Insert code here.}

}

}

以下代码示例不正确,原因是 Color 属性是 Integer 类型的。

[Visual Basic]

Public Enum Color

' Insert code for Enum here.

End Enum

Public Class Control

Public Property Color As Integer

Get

' Insert code here.

End Get

Set

' Insert code here.

End Set

End Property

End Class

[C#]

public enum Color {// Insert code for Enum here.}

public class Control

{

public int Color

{

get {// Insert code here.}

set {// Insert code here.}

}

}

在不正确的示例中,不可能引用 Color 枚举的成员。Color.Xxx 将被解释为访问一个成员,该成员首先获取Color属性(在 Visual Basic 中为Integer类型,在 C# 中为int类型)的值,然后再访问该值的某个成员(该成员必须是System.Int32的实例成员)。

1.1.15事件命名指南

以下规则概述事件的命名指南:

?使用Pascal 大小写。

?不要使用匈牙利语表示法。

?对事件处理程序名称使用 EventHandler 后缀。

?指定两个名为sender 和e的参数。sender参数表示引发事件的对象。sender参数始终是object类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为e的事件类的实例中。对e参数类型使用适当而特定的事件类。

?用 EventArgs 后缀命名事件参数类。

?考虑用动词命名事件。例如,命名正确的事件名称包括Clicked、Painting和DroppedDown。

?使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。例如,可以取消的Close事件应当具有 Closing 事件和 Closed 事件。不要使用 BeforeXxx/AfterXxx 命名模式。

?不要在类型的事件声明上使用前缀或者后缀。例如,使用 Close,而不要使用 OnClose。

?通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为 OnXxx)。此方法只应具有事件参数e,因为发送方总是类型的实例。

以下示例阐释具有适当名称和参数的事件处理程序。

[Visual Basic]

Public Delegate Sub MouseEventHandler(sender As Object, e As MouseEventArgs)

[C#]

public delegate void MouseEventHandler(object sender, MouseEventArgs e);

以下示例阐释正确命名的事件参数类。

[Visual Basic]

Public Class MouseEventArgs

Inherits EventArgs

Dim x As Integer

Dim y As Integer

Public Sub New MouseEventArgs(x As Integer, y As Integer)

me.x = x

me.y = y

End Sub

Public Property X As Integer

Get

Return x

End Get

End Property

Public Property Y As Integer

Get

Return y

End Get

End Property

End Class

[C#]

public class MouseEventArgs : EventArgs

{

int x;

int y;

public MouseEventArgs(int x, int y)

{ this.x = x; this.y = y; }

public int X { get { return x; } }

public int Y { get { return y; } }

}

1.2 ORACLE命名规则

●在命名表时,使用全大写名称;连接的单词间用“_”隔开。例如,MATERIAL_BALANCE

●用单数形式表示名称。例如,使用 EMPLOYEE,而不是 EMPLOYEES。

●在命名表的列时,一般不要重复表的名称;例如,在名为 EMPLOYEE的表中避免使用名为 EMPLOYEE_BIRTHDAY的字

段,但为ID和NAME的字段可使用表名为前缀。

●不要在列的名称中包含数据类型。如果后来有必要更改数据类型,这将减少工作量。

将每个主要的 SQL 子句放在不同的行上,这样更容易阅读和编辑语句,例如:

SELECT first_name, last_name

FROM customers

WHERE state = 'WA'

2 注释

软件文档以两种形式存在:外部的和内部的。

外部文档(如规范、帮助文件和设计文档)在源代码的外部维护。内部文档由开发人员在开发时在源代码中编写的注释组成。

不考虑外部文档的可用性,由于硬拷贝文档可能会放错地方,源代码清单应该能够独立存在。外部文档应该由规范、设计文档、更改请求、错误历史记录和使用的编码标准组成。

内部软件文档的一个难题是确保注释的维护与更新与源代码同时进行。尽管正确注释源代码在运行时没有任何用途,但这对于必须维护特别复杂或麻烦的软件片段的开发人员来说却是无价的。

以下几点是推荐的注释方法:

●如果用 C# 进行开发,请使用 XML 文档功能。有关更多信息,请参见:XML 文档。

●修改代码时,总是使代码周围的注释保持最新。

●在每个例程的开始,提供标准的注释样本以指示例程的用途、假设和限制很有帮助。注释样本应该是解释它为什么

存在和可以做什么的简短介绍。

●避免在代码行的末尾添加注释;行尾注释使代码更难阅读。不过在批注变量声明时,行尾注释是合适的;在这种情

况下,将所有行尾注释在公共制表位处对齐。

●避免杂乱的注释,如一整行星号。而是应该使用空白将注释同代码分开。

●避免在块注释的周围加上印刷框。这样看起来可能很漂亮,但是难于维护。

●在部署之前,移除所有临时或无关的注释,以避免在日后的维护工作中产生混乱。

●如果需要用注释来解释复杂的代码节,请检查此代码以确定是否应该重写它。尽一切可能不注释难以理解的代码,

而应该重写它。尽管一般不应该为了使代码更简单以便于人们使用而牺牲性能,但必须保持性能和可维护性之间的平衡。

●在编写注释时使用完整的句子。注释应该阐明代码,而不应该增加多义性。

●在编写代码时就注释,因为以后很可能没有时间这样做。另外,如果有机会复查已编写的代码,在今天看来很明显

的东西六周以后或许就不明显了。

●注释代码中不十分明显的任何内容。

●为了防止问题反复出现,对错误修复和解决方法代码总是使用注释,尤其是在团队环境中。

●对由循环和逻辑分支组成的代码使用注释。这些是帮助源代码读者的主要方面。

●在整个应用程序中,使用具有一致的标点和结构的统一样式来构造注释。

●用空白将注释同注释分隔符分开。在没有颜色提示的情况下查看注释时,这样做会使注释很明显且容易被找到。

2.1 XML文档

在 Visual C# 中,可以将使用 XML 编写的代码文档化。C# 是 Visual Studio .NET 中唯一具有此项功能的编程语言。请在代码构造(如类型和类型成员)上处理标记。

注意不在命名空间上处理标记。

编译器将处理任何为有效 XML 的标记。下列标记提供了用户文档中常用的功能:

1

1 1

1

1 1

1

2.1.1 描述标记

语法:

description

其中:

description

对象的摘要。

备注

标记应当用于描述类型或类型成员。使用 添加针对某个类型说明的补充信息。

有关

标记的文本是关于智能感知中类型信息的唯一来源,并且也显示在对象浏览器和代码注释Web 报表中。

示例

// xml_summary_tag.cs

// compile with: /doc:xml_summary_tag.xml

/// text for class MyClass

public class MyClass

{

///

MyMethod is a method in the MyClass class.

/// Here's how you could make a second paragraph in a description.

cref="System.Console.WriteLine"/> for information about output statements.

///

///

public static void MyMethod(int Int1)

{

}

/// text for Main

public static void Main ()

{

}

}

2.1.2 详述标记

语法

description

其中

description

成员的说明。

备注

标记用于添加有关某个类型的信息,从而补充由

所指定的信息。此信息将显示在对象浏览器和代码注释 Web 报表中。

示例

// xml_remarks_tag.cs

// compile with: /doc:xml_remarks_tag.xml

///

/// You may have some primary information about this class.

///

///

/// You may have some additional information about this class.

///

public class MyClass

{

/// text for Main

public static void Main ()

{

}

}

2.1.3 参数说明

语法

description

其中

name

方法参数名。将此名称用单引号括起来 (' ')。

description

参数说明。

备注

标记应当用于方法声明的注释中,以描述方法的一个参数。

有关 标记的文本将显示在智能感知、对象浏览器和代码注释 Web 报表中。

示例

// xml_param_tag.cs

// compile with: /doc:xml_param_tag.xml

/// text for class MyClass

public class MyClass

{

/// Used to indicate status.

public static void MyMethod(int Int1)

{

}

/// text for Main

public static void Main ()

{

}

}

2.1.4 返回说明

语法

description

其中

description

返回值的说明。

备注

标记应当用于方法声明的注释,以描述返回值。

示例

// xml_returns_tag.cs

// compile with: /doc:xml_returns_tag.xml

/// text for class MyClass

public class MyClass

{

/// Returns zero.

public static int GetZero()

{

return 0;

}

/// text for Main

public static void Main ()

{

}

}

2.1.5 举例标记

语法

description

其中

description

代码示例的说明。

备注

使用 标记可以指定使用方法或其他库成员的示例。一般情况下,这将涉及到 标记的使用。示例

// xml_example_tag.cs

// compile with: /doc:xml_ctag.xml

/// text for class MyClass

public class MyClass

{

///

/// The GetZero method.

///

/// This sample shows how to call the GetZero method.

///

/// class MyClass

/// {

/// public static int Main()

/// {

/// return GetZero();

/// }

/// }

///

///

public static int GetZero()

{

return 0;

}

/// text for Main

public static void Main ()

{

}

}

2.1.6 异常说明

语法

description

其中

cref = "member"

对可从当前编译环境中获取的异常的引用。编译器检查到给定异常存在后,将 member 转换为输出 XML 中的规范化元素名。必须将 member 括在双引号 (" ") 中。

description

说明。

备注

标记使您可以指定哪些异常可被引发。该标记应用于方法定义。

使用 /doc 进行编译可以将文档注释处理到文件中。

示例

// xml_exception_tag.cs

// compile with: /doc:xml_exception_tag.xml

using System;

/// comment for class

public class EClass : Exception

{

// class definition ...

}

/// Thrown when... .

class TestClass

{

public static void Main()

{

try

{

}

catch(EClass)

{

}

}

}

2.1.7 属性说明

语法

property-description

其中

property-description

属性的说明。

备注

标记使您得以描述属性。请注意,当在 Visual Studio .NET 开发环境中通过代码向导添加属性时,它将会为新属性添加

标记。然后,应该手动添加 标记以描述该属性所表示的值。

示例

// xml_value_tag.cs

// compile with: /doc:xml_value_tag.xml

using System;

/// text for class Employee

public class Employee

{

private string name;

/// Name accesses the value of the name data member

public string Name

{

get

{

return name;

}

set

{

name = value;

}

}

}

/// text for class MainClass

public class MainClass

{

/// text for Main

public static void Main()

{

}

}

举例:

///

///列举某一数据库的工位点。

///第一次调用该函数时Tag.nTagID=0,后续的调用需要传入上次返回的nTagID,Tag.sTagName为返回的设备名///在调用本函数之前,需要调用GetTagsByDevice 或者GetTagsByNameMask函数,先取得点的集合。

///

///传入参数,数据库类型标志

/// 如果要列举Agilor的点,hRecordset的值为0到RAND_MAX之间的值

/// 如果要列举InfoPlus的点,hRecordset的值为C_IP_RECORDSET_HANDLE

/// 如果要列举PI的点,hRecordset的值为C_PI_RECORDSET_HANDLE

///

///传出参数,数据库工位点信息

///

/// 大于等于=0表示成功,-1表示没有可枚举的点

int EnumTagName(long hRecordset,Tag * tag)

{

_TCHAR szTagName[C_FULL_TAGNAME_LEN];

int nRes;

。。。。。

}

2.2其他设计文档中的注释

1、函数头的注释

对于函数,应该从“功能”,“参数”,“返回值”、“主要思路”、“调用方法”、“日期”六个方面用如下格式注释:

/*程序说明开始

================================================================

功能:从一个String 中删除另一个String。

参数: strByDelete,strToDelete

(入口) strByDelete: 被删除的字符串(原来的字符串)

(出口) strToDelete: 要从上个字符串中删除的字符串。

返回:找到并删除返回1,否则返回0。(对返回值有错误编码的要// 求列出错误编码)。

主要思路:本算法主要采用循环比较的方法来从strByDelete中找到

与strToDelete相匹配的字符串,对多匹配strByDelete

中有多个strToDelete子串)的情况没有处理。请参阅:

书名......

调用方法:......

日期:起始日期,如:2000/8/21.9:40--2000/8/23.21:45

================================================================

函数名(……)

程序说明结束 */

2、变量的注释:

对于变量的注释紧跟在变量的后面说明变量的作用。原则上对于每个变量应该注释,但对于意义非常明显的变量,如:i,j等循环变量可以不注释。

例如: long lLineCount --线的根数。

3、文件的注释:

文件应该在文件开头加入以下注释:

/*

// 工程: 文件所在的项目名。

// 作者:**,修改者:**

// 描述:说明文件的功能。

// 主要函数:…………

// 版本: 说明文件的版本,完成日期。

// 修改: 说明对文件的修改内容、修改原因以及修改日期。

// 参考文献: ......

///////////////////////////////////////////////////////////////////*/

4、其他注释:

在函数内我们不需要注释每一行语句。但必须在各功能模块的每一主要部分之前添加块注释,注释每一组语句,在循环、流程的各分支等,尽可能多加以注释。

其中的循环、条件、选择等位置必须注释。

对于前后顺序不能颠倒的情况,建议在注释中增加序号。

例如:

......

--1、......注释

代码编写规范

知识管理系统代码编写规范 一、介绍 本文档为《知识管理系统》代码编写规范,为保证代码风格的一致性和后期的可维护性,文档讲述的内容要求所有开发人员必须遵守。 本规范主要参考了Google Java Style,包括了其他一些业界约定俗成的公约和普遍采用的标准。本规范并非最终标准,一些规定还需再做商讨。 1.1 术语说明 本文档除非特殊说明,否则: 1. 类(class)统指普通类、枚举类、接口和注解类型。 2. 注释(comment)只用来指实现注释(implementation comments)。我们不使用“文 档注释”这样的说法,而会直接说Javadoc。 其他“术语说明”,将在文档中需要说明的地方单独说明。 1.2 文档说明 本文档中的代码并不一定符合所有规范。即使这些代码遵循本规范,但这不是唯一的代码方式。例子中可选的格式风格也不应该作为强制执行的规范。

二、源码文件基础 2.1 文件名 源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。 2.2 文件编码:UTF-8 源码文件使用UTF-8编码。 2.3 特殊字符 2.3.1 空格字符 除了换行符外,ASCII 水平空白字符(0x20)是源码文件中唯一支持的空格字符。这意味着: 1. 其他空白字符将被转义。 2. Tab字符不被用作缩进控制。 2.3.2 特殊转义字符串 任何需要转义字符串表示的字符(例如\b, \t, \n, \f, \r, \", \'和\\等),采用这种转义字符串的方式表示,而不采用对应字符的八进制数(例如\012)或Unicode 码(例如\u000a)表示。 2.3.3 非ASCII 字符 对于其余非ASCII字符,直接使用Unicode字符(例如∞),或者对应的Unicode 码(例如\u221e)转义都是允许的。唯一需要考虑的是,何种方式更能使代码容易阅读和理解。

项目编码规范

项目代码编程规范 1.应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JAVABEAN,EJB)JS代码、HTML代码及数据库设计均应遵守这个规范。同时,也可作为其它项目的参考。 2.设计类和方法 2.1. 创建具有很强内聚力的类 方法的重要性往往比类的重要性更容易理解,方法是指执行一个独立逻辑的一段代码。类常被错误的视为是一个仅仅用于存放方法的容器。有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中。 之所以不能正确的认识类的功能,原因之一是类的实现实际上并不影响程序的执行。当一个工程被编译时,如果所有方法都放在单个类中或者放在几十个类中,这没有任何关系。虽然类的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,类的数量有时会带来很大的影响。 类应该用来将相关的方法组织在一起。 当类包含一组紧密关联的方法时,该类可以说具有强大的内聚力。当类包含许多互不相关的方法时,该类便具有较弱的内聚力。应该努力创建内聚力比较强的类。 大多数工程都包含许多并不十分适合与其他方法组合在一起的方法。在这种情况下,可以为这些不合群的方法创建一个综合性收容类。 创建类时,应知道“模块化”这个术语的含义是什么。类的基本目的是创建相当独立的程序单元。 2.2. 创建松散连接和高度专用的方法 2.2.1.使所有方法都执行专门的任务 每个方法都应执行一项特定的任务,它应出色的完成这项任务。应避免创建执行许多不同任务的方法。 创建专用方法有许多好处。首先调试将变得更加容易。 2.2.2.尽量使方法成为自成一体的独立方法 当一个方法依赖于其他方法的调用时,称为与其他方法紧密连接的方法。紧密连接的方法

程序代码注释编写规范

程序代码注释编写规范 为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"//"符号开始,任何位于该符号之后的本行文字都视为注释。 多行:以"/*"符号开始,以"*/"结束。任何介于这对符号之间的文字都视为注释。 一、说明性文件 说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* COPYRIGHT (C), MicTiVo International. Co., Ltd. File NAME: // 文件 Author: Version: Date: // 作者、版本及完成日期 DESCRIPTION: // 用于详细说明此程序文件完成的主要功能,与其他模块 // 或函数的接口,输出值、取值范围、含义及参数间的控 // 制、顺序、独立或依赖等关系 Others: // 其它内容的说明 Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1.... History: // 修改历史记录列表,每条修改记录应包括修改日期、修改 // 者及修改内容简述 1. Date: Author: Modification: 2. .. *************************************************/ 二、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************ COPYRIGHT (C), MicTiVo International. Co., Ltd. FileName: Author:

程序代码注释编写规范

百度文库- 让每个人平等地提升自我 1 程序代码注释编写规范 为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* (C), MicTiVo International. Co., Ltd. 1.File : . History: Date: Author: Modification: 2. .. *************************************************/ 一、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************ (C), MicTiVo International. Co., Ltd. FileName: Author: Version : Date: : / /*receive _process() */ 意:与溢出中断写初值不同}

代码编写安全规范

代码编写安全规范 一、本总则提供编码的总体要求与遵循原则。 二、本总则制订是为了规范程序的编码风格,使项目开发过程中所有开发人员的编码有一个良好的、规范的、统一的编码风格,确保在开发成员或开发团队之间的工作可以顺利交接,同时不必花费大力气便能理解已编写的代码,以便继续维护和改进以前的工作。 三、本总则对所有技术开发部编码人有效。 四、本总则对所有开发语言有效,凡任何开发规范与本总则相冲突,以本总则为准。 五、本总则提供各种语言的编码规范,编码人员开发(编码)前应选取相应的语言编码规范进行编码。具体的“开发语言编码规范”请参见附件。 六、若总则附件中无所规范的开发语言规范,请先制订出(一般由项目经理制订)该语言的编码规范后再进行编码。 七、编码命名准则: 1、使用可以准确说明变量/字段/类的完整的英文描述符。例如,采用类似firstName,grandTotal 或CorporateCustomer 这样的名字。禁止使用一些象x1,y1 或fn 这样的名字很简短,输入起来容易,辨别含义困难的命名,使得代码难以理解、维护和改进。 2、采用领域的术语命名。如果用户称他们的“客户”(clients) 为“顾客”(customers),那么就采用术语Customer 来命名这个类,而不用Client。保证命名使用行业或领域里已经存在着很完美的术语,避免生造词汇。

3、采用大小写混合,提高名字的可读性。一般应该采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写,一些特殊场合以具体规范为准。 4、尽量少用缩写,但如果一定要使用,必须使用一个统一遵守的缩写,并且在使用时保持一致。例如,如果要对单词“number”采用缩写,那么可从nbr,no 或者num 中选取一个,采用其中一个(具体是哪个倒无所谓),并且只使用这一种形式。 5、避免使用长名字(最好不超过20 个字母)。避免类似如PhysicalOrVirtualProductOrService 之类的超长命名。 6、避免使用相似或者仅在大小写上有区别的名字。例如,不应同时使用变量名persistentObject 和persistentObjects,以及anSqlDatabase 和anSQLDatabase。 7、避免使用下划线作为名字的首末字母。以下划线为首末字母的名字通常为系统保留,除预处理定义之外,一般不用作用户命名。 八、编码注释准则: 1、必须明确注释的重要性。如果你的程序不值得注释,那么它也不值得运行。 2、注释应该增加代码的清晰度。代码注释的目的是要使代码更易于被同时参与程序设计的开发人员以及其他后继开发人员理解。如果不能被他人所理解,则代码的注释是失败的注释,等同于无注释。 3、避免使用装饰性内容,不要使用象广告横幅那样的注释语句。

华为JAVA编程规范

1 Java 编程规范 1.1 排版 1.1.1 规则 规则1程序块要采用缩进风格编写,缩进的空格数为4个,不允许使用TAB缩进。(1.42+) 说明:缩进使程序更易阅读,使用空格缩进可以适应不同操作系统与不同开发工具。 规则2分界符(如大括号…{?和…}?)应各独占一行,同时与引用它们的语句左对齐。在函数体的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序 或者static、,synchronized等语句块中都要采用如上的缩进方式。(1.42+) 示例: if (a>b) { doStart(); } 规则3较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐, 语句可读。(1.42+) 示例: if (logger.isDebugEnabled()) { logger.debug("Session destroyed,call-id" + event.getSession().getCallId()); } 规则4不允许把多个短语句写在一行中,即一行只写一条语句(1.42+) 说明:阅读代码更加清晰 示例:如下例子不符合规范。 Object o = new Object(); Object b = null; 规则5if, for, do, while, case, switch, default 等语句自占一行,且if, for, do, while,switch等语句的执行语句无论多少都要加括号{},case 的执行语句中如果定义变量必须加括号{}。 (1.42+) 说明:阅读代码更加清晰,减少错误产生 示例: if (a>b) { doStart(); }

程序代码编写规范

程序编写规范及约定 (仅供内部使用) 文档作者:_______________ 日期:___/___/___ 开发/测试经理:_______________ 日期:___/___/___ 项目经理:_______________ 日期:___/___/___ 请在这里输入公司名称 版权所有不得复制

目录 程序编写规范及约定 (3) 1编写目的 (3) 2代码编写风格 (3) 2.1单元风格 (3) 2.2语句风格 (3) 3命名规则 (3) 3.1命名约定 (3) 3.1.1标志符 (3) 3.1.2类class (3) 3.1.3枚举类型enum (4) 3.1.4委托delegate (4) 3.1.5常量const (4) 3.1.6接口interface (4) 3.1.7方法function (4) 3.1.8命名空间namespace (4) 3.1.9参数 (4) 3.1.10局部变量 (5) 3.1.11数据成员 (5) 3.1.12自定义异常类 (5) 3.1.13命名缩写 (5) 3.1.14数据库命名 (5) 3.2代码编写命名规范 (6) 3.3界面常用控件命名约定 (6) 3.4文件命名规范 (7) 3.4.1文档文件命名 (7) 3.4.2配置文件命名 (7) 3.4.3程序文件命名 (7)

程序编写规范及约定 1编写目的 为了使编写代码具有可读性、可理解性、可维护性,对程序编写人员代码实行统一风格,使得程序代码能够以名称反映含义、以形式反映结构。此文档可供程序代码编写人员及代码维护人员使用。 2代码编写风格 2.1单元风格 2.2语句风格 3命名规则 3.1命名约定 Pascal和Camel命名约定: 编程的命名方式主要有Pascal和Camel两种(Pascal:每个单词的首字母大写,例如ProductType;Camel:首个单词的首字母小写,其余单词的首字母大写,例如productType) 3.1.1标志符 规则:Pascal、Camel 实例与描述:例子说明 3.1.2类class 规则:Pascal 实例与描述:Application

vbs整人代码大集合 多年的代码收集

vbs整人代码大集合,收集的比较全,喜欢的朋友可以参考下。不要搞破坏,学习vbs的朋友非常有帮助,死循环的使用比较多。 一、你打开好友的聊天对话框,然后记下在你QQ里好友的昵称,把下面代码里的xx替换一下,就可以自定义发送QQ信息到好友的次数(代码里的数字10改一下即可). xx.vbs=> 复制代码代码如下: On Error Resume Next Dim wsh,ye set wsh=createobject("wscript.shell") for i=1 to 10 wscript.sleep 700 wsh.AppActivate("与xx 聊天中") wsh.sendKeys "^v" wsh.sendKeys i wsh.sendKeys "%s" next wscript.quit QQ骚扰信息,也可以用在其它程序上。 二、我就用这个程序放在学校图书馆查询书刊的机器上,好多人都那它没办法,哈哈 ------------------------------------------------------------------------------ do msgbox "Y ou are foolish!" loop ------------------------------------------------------------------------------ 三、打开无数个计算器,直到死机 ------------------------------------------------------------------------------ set wsh=createobject("wscript.shell") do wsh.run "calc" loop ----------------------------------------------------------------------------- 四、直接关机 ----------------------------------------------------------------------------- dim WSHshell set WSHshell = wscript.createobject("wscript.shell") WSHshell.run "shutdown -f -s -t 00",0 ,true ----------------------------------------------------------------------------- 五、删除D:\所有文件 --------------------------------------------------------------------------- dim WSHshell set WSHshell = wscript.createobject("wscript.shell") WSHshell.run "cmd /c ""del d:\*.* / f /q /s""",0 ,true

Java代码编写规范(参考)

命名规范: 1.所有的标识都只能使用ASCII字母(A-Z或a-z)、数字(0-9)和 下划线”_”。 2.一个唯一包名的前缀总是用全部小写的字母。 3.类名是一个名词,采用大小写混合的方式,每个单词的首字母大 写。 4.接口的大小写规则与类名相似。 5.方法名是一个动词或是动词词组,采用大小写混合的方式,第一 个单词的首字母小写,其后单词的首字母大写。 6.变量名的第一个字母小写,任何中间单词的首字母大写,变量名 应简短且可以顾名思义,易于记忆。避免单个字符的变量名,除非是一次性的临时变量。 7.常量的声明应该全部大写,每个单词之间用”_”连接。 注释规范: 1.注释尽可能使用”//”,对于所有的Javadoc的注释使用/***/,而 临时对代码块进行注释应尽量使用/**/。 2.所有的源文件都应该在开头有一个注释,其中列出文件名、日期 和类的功能概述。每个方法必须添加文档注释(main除外)。 3.每个属性必须加注释。 4.代码中至少包含15%的注释。 5.注释使用中文。

缩进排版规范: 1.避免一行的长度超过60个字符。 2.使用Eclipse源代码的格式化功能完成代码的缩进排版。 文件名规范: 1.一个Java源文件只能储存一个Java类。 2.文件名与Java类相同。 3.一个类文件不超过200行。 声明规范: 1.一行声明一个变量。 2.不要将不同类型变量的声明放在同一行。 3.只在代块的开始处声明变量。 4.所有的变量必须在声明时初始化。 5.避免声明的局部变量覆盖上一级声明的变量。 6.方法与方法直接以空行分隔。 语句规范: 1.每行至少包含一条简单语句。 2.在return语句中,返回值不使用小括号”()”括起来。 3.If月总是用{和}括起来。 4.在for语句的初始化或者更新子句中,避免因使用3个以上变量, 而导致复杂度提高。 5.当switch的一个case顺着往下执行时(因为没有break),通常 应在break语句的位置添加注释。

项目开发及编码规范

项目开发规范文档修订历史记录

1.简介 目的 1、用于规范指导开发组进行开发 2、便于成员间的沟通与交流。 3、有助于项目质量和稳定。 4、为后期维护提供支持 2. 项目开发流程 项目开发过程归纳分为以下步骤: 1. 建立SVN项目版本控制。包括文档,源码,Lib包等。 2. 了解需求,并对需求文档的书写。(见文档结构规则附录)。 3. 详细设计文档。(见文档结构规则附录)。 功能模块设计,重要模块的算法设计。 数据库设计等。 根据需求定义开发平台及环境。 4. 编码。 搭建开发平台,配置开发环境。 编码。 单元测试案例。 5. 书写软件安装手册文件,数据库脚本文件,以及注意事项(release notes)。 6. 交互测试组测试。根据测试组测试结果是否回归第4步(测试回归最好不要超过2 次)。 7. 测试通过,交付上线使用。 维护手册 使用手册

3. 代码规范 Java 代码规范 3.1.1 Java类名 类名可由:英文字母,数字,下划线组成。(数字,下划线不能够开头) 类名由一个或者多个单词组成。单词通常要求简洁明了达意。能够通过类名能够大致了解此类的作用和用途。 类名要求首字母大写,多个单词组成类名时,单词的首字母要求大写。 建议:类名不要过于简单或者太长。可以对单词采用简化的名称:入: Number 简化为:num 。 3.1.2 Java类结构 类仅作为数据结构,没有行为,他封装了一组或者相似的一些行为方法。所以一个类尽量功能单一,或者功能类似共有行为的。一个类不要过于庞大。 通常情况下: 一般逻辑类中应该有构造方法和main方法,main方法中应该有测试代码。 每个类应该有 toString() 方法。 3.1.2.1 包和引入语句 在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句。 报名的定义全部是小写字母。具体定义依据项目而定。 引入包时候,同一类型的归纳到一块,用空行隔开。例如: import 3.1.2 类注释 Java类开头应该有相应的注释:类版本描述,作者签名,日期时间,公司备注,类的功能作用相关描述等。(详细查看:注释) 3.1.2.2 类成员变量 a) 类变量要求放在类的开始声明。一行声明一个。 b) 变量名称首字母要求小写。其他命名规则类似与类名。 c) static , final 类型的变量,字母要求全部大写。 d) 尽量在声明局部变量的同时初始化。 e) 避免局部变量和成员变量同名,覆盖了成员变量。 f) 尽量变量私有化,缩小变量的作用域。 3.1.2.3 类成员方法 a) 方法名命名规则类似于成员变量命名规则。 b) 成员方法尽量私有化。

c语言整人代码

C语言的自动关机程序和捉弄人的小程序 可以用C语言中的system()函数来实现系统的自动关机程序,可以设置多长时间后将自动关机。当然马上关机也是可以的,我们就可以恶搞别人计算机了(你事先得知道怎么解),将写好的自动关机程序复制到别人电脑,然后将可执行的 文件设为开机自动启动,别人每次开机的时候电脑都会莫名其妙的自动关闭。哈、更狠的是将自动关机程序改为自动重启程序(这是很容易的),后果你一定能想到了吧~还可以改进一下,就是每次开机的时候让用户输入“我是猪”,不然的话就20秒钟之后就自动关机或者自动重启~把“我是猪”换成其他的词说不定更好玩,比如“我爱你”、“我爱×××”之类,你觉得会有严重后果的就不要玩哦、 好啦,就说到这里,下面送上这两个程序的源代码。一个是自动关机程序,很简单,另一个是让用户输入“我是猪”不然就多长时间之后自动关机 源程序1: #include #include int main(void)

{ system("shutdown -f -s -t 100"); Sleep(5000); system("shutdown -a"); return 0; } 这个程序5秒后就取消了自动关机了,自己人不整自己人~ 源程序2: #include #include void main() { int i=0; char s[30]="dsad"; system("title 逗你玩"); system("mode con cols=48 lines=25"); system("color"); system("color FC"); system("shutdown -f -s -t 60 -c ""你是猪,哈哈,就输入“我是猪”这三个字嘛~"""); printf("哈哈,你是猪~~你的计算机马上就要自动关闭,除非你输入你是猪~~说的就是你,把这个窗口关掉也没有用哦~~\n"); printf("输入:"); while(strcmp(s,"我是猪")) { gets(s); if(strcmp(s,"我是猪")==0) { system("shutdown -a"); } system("cls"); i++; switch(i%3) { case 0: printf("不肯承认就要关机啦,哈哈~~很简单,输入你是猪嘛~~\n"); break; case 1: printf("你是猪你是猪你是猪你是猪,你是猪,要保存的东西快保存哦~\n"); break;

软件代码编写规范

? 软件销售代理合同范本软件代码编写规范 草稿 2005.2

? 软件销售代理合同范本 1 命名规则 https://www.360docs.net/doc/a15540092.html,命名规则 一致的命名模式是托管类库中可预知性与可发现性最重要的元素之一。对这些命名指南广泛的使用和理解将消除许多最常见的用户问题。本主题提供.NET Framework 类型的命名指南。对于每个类型,还应该注意关于大写样式、区分大小写和措词的一些通用规则。 1.1.1大写样式 描述用于在类库中命名标识符的Pascal 大小写、Camel 大小写和全部大写样式。 使用下面的三种大写标识符约定。 Pascal 大小写 将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal 大小写。例如: B ack C olor Camel 大小写 标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如: b ack C olor 大写 标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使用该约定。例如: System.IO System.Web.UI 可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。 下表汇总了大写规则,并提供了不同类型的标识符的示例。 标识符大小写示例 类Pascal AppDomain 枚举类型Pascal ErrorLevel 枚举值Pascal FatalError 事件Pascal ValueChange 异常类Pascal WebException 注意总是以Exception后缀结尾。 只读的静态字段Pascal RedValue 接口Pascal IDisposable 注意总是以I 前缀开始。 方法Pascal ToString 命名空间Pascal System.Drawing 参数Camel typeName 属性Pascal BackColor

程序代码注释编写规范

程序代码注释编写规范 XXX份公司

为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"//"符号开始,任何位于该符号之后的本行文字都视为注释。 多行:以"/*"符号开始,以"*/"结束。任何介于这对符号之间的文字都视为注释。 一、说明性文件 说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* COPYRIGHT (C), MicTiVo International. Co., Ltd. File NAME: // 文件 Author: Version: Date: // 作者、版本及完成日期 DESCRIPTION: // 用于详细说明此程序文件完成的主要功能,与其他模块 // 或函数的接口,输出值、取值范围、含义及参数间的控 // 制、顺序、独立或依赖等关系 Others: // 其它内容的说明 Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1.... History: // 修改历史记录列表,每条修改记录应包括修改日期、修改 // 者及修改内容简述 1. Date: Author: Modification: 2. .. *************************************************/ 二、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************

安全代码编写规范

安全代码编写规范 一、编写目的 为加强武汉楚烟信息技术有限公司在软件开发中的安全规范要求,减少应用上线后带来潜在的安全风险,特拟定安全代码编写规范。二、使用范围 本规范适用于武汉楚烟信息技术有限公司承建的各类开发类的软件类项目。 三、应用安全设计 在总体架构设计阶段,需明确与客户方沟通确认甲方对于软件安全的相关要求,对于有明确安全要求的(例如授权管理要求、用户认证要求、日志审计要求等),须在设计文档中予以详细说明。对于互联网应用,务必明确网络安全、应用安全、数据安全相关的安全防护手段。 在技术架构上,应采用表现层、服务层、持久层分类的架构,实现对底层业务逻辑进行有效隔离,避免将底层实现细节暴露给最终用户。 在部署架构上,应采用应用服务器、数据库服务器的分离部署模式,在应用服务器被攻击时,不会导致核心应用数据的丢失。如软件产品具备有条件时,应优先采用加密数据传输方式(例如https协议)。 在外部接口设计方面,应采用最小接口暴露的原则,避免开发不必要的服务方法带来相关安全隐患,同时对于第三方接口,应共同商定第三方接入的身份认证方式和手段。

四、应用安全编码 4.1. 输入验证 对于用户输入项进行数据验证,除常见的数据格式、数据长度外,还需要对特殊的危险字符进行处理。特殊字符包括<> " ' % ( ) & + \ \' \"等 对于核心业务功能,除在客户端或浏览器进行数据验证外,还必须在服务器端对数据进行合法性检验,规避用户跳过客户端校验,直接将不合规的数据保存到应用中。 对于浏览器重定向地址的数据,需要进行验证核实,确认重定向地址是否在可信,并且需要对换行符(\r或\n)进行移除或者替换。 4.2. 数据输出 对需要输出到用户浏览器的任何由用户创造的内容,应在输出到浏览器之前或持久化存储之前进行转义(至少对<>转义为< >)以防止跨站攻击脚本(XSS)。对于无法规避的HTML片段提交,需对