软件开发规范Word格式文档下载.docx

上传人:b****5 文档编号:17608589 上传时间:2022-12-07 格式:DOCX 页数:33 大小:62.44KB
下载 相关 举报
软件开发规范Word格式文档下载.docx_第1页
第1页 / 共33页
软件开发规范Word格式文档下载.docx_第2页
第2页 / 共33页
软件开发规范Word格式文档下载.docx_第3页
第3页 / 共33页
软件开发规范Word格式文档下载.docx_第4页
第4页 / 共33页
软件开发规范Word格式文档下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

软件开发规范Word格式文档下载.docx

《软件开发规范Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件开发规范Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。

软件开发规范Word格式文档下载.docx

4.7.2.14控件命名18

4.7.2.15大写风格23

4.8开发习惯23

4.8.1可见性23

4.8.2不要硬编码数字23

4.9代码示例24

4.9.1作用域(“{}”)示例24

5参考25

6附录25

6.1XML注释标记的使用25

7修改历史28

1目标

为重庆思恩科信息技术有限责任公司的技术部制定一个统一的编码规范,最大限度减少不同程序员开发的代码间的差异。

2概述

为了使应用程序的结构和编码风格标准化,便于阅读和理解编码,以提高开发效率和产品的标准化,制订一套开发规范和标准势在必行。

此外,好的编码约定可使源代码严谨、可读性强且意义清楚,与其它语言约定相一致,并且尽可能的直观。

希望开发人员严格遵守此套开发规范和标准,并落实到自己的程序中。

本规范主要针对.NET程序员,但是其中许多规则同时适用于其他语言的程序员。

3总体要求

程序结构化

∙程序结构清晰,函数功能简单易懂(单个函数的代码行数不超过100行)

代码可读性

∙保持注释与代码完全一致

∙每个源程序文件,都有文件头说明,详细见下节

∙每个函数,都有函数头说明,详细见下节

∙主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义

∙处理过程的每个阶段都有相关注释说明

∙在典型算法前都有注释,同时算法在满足要求的情况下尽可能简单

∙利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为4个字节

∙循环、分支层次一般不应超过五层

∙代码简单的分支应该写在前面

∙不允许同行出现两个语句

∙空行和空白字符也是一种特殊注释

∙一目了然的语句不加注释

∙注释的作用范围可以为:

定义、引用、条件分支以及一段代码

∙常量定义(DEFINE)有相应说明

代码结构化

∙禁止GOTO语句

∙用CASE实现多路分支

∙避免不必要的分支

∙用IF语句来强调只执行两组语句中的一组。

尽量不使用ELSERETURN

∙尽量避免从循环引出多个出口

正确性与容错性

∙所有变量在调用前必须被初始化

∙不要比较浮点数的相等,如:

10.0*0.1==1.0,不可靠

∙访问外部资源(数据库,外部文件)时使用规范的容错语句

例如:

try

{

}

catch

finally

4编码规范

文件结构

C#文件

尽量不要让你的类或者文件太长,一般不应超过2000行代码。

请按照功能划分你的代码,使结构保持清晰。

一般情况下,一个文件应当只有一个类,并且文件名应该与类名保持一致。

目录结构

应该为每个名称空间(namespace)建立一个目录(例如,我们可以为名称空间MyProject.TestSuite.TestTier建立这样的目录:

MyProject/TestSuite/TestTier)。

这样做可以让你很快定位到指定名称空间下的类文件。

示例如图:

缩进

换行

如果表达式太长而一行无法写下时,请按照下列规范进行换行:

●可以在逗号后面进行换行

●可以在操作符号后进行换行

●尽量选择在较高层处进行换行

●换行后的新行应当与前一行中同级别的运算符对齐

例子:

方法调用换行:

longMethodCall(expr1,expr2,

 

expr3,expr4,expr5);

算术表达式换行:

规范的:

var=a*b/(c-g+f)+

4*z;

不规范的:

var=a*b/(c-g+

f)+4*z;

上面第一个表达式的换行方式是符合规范的,它换行在括号外面(较高层)。

另外请注意,换行后的新行应使用tab和空格保持与前一行的同级运算符对齐,例如:

>

var=a*b/(c-g+f)+

......4*z;

'

表示Tab符,'

.'

表示空格。

你可以设置你的编辑环境,使Tab和空格在编辑时是可见的,这是一个不错的习惯。

空格

我们选择Tab缩进作为缩进时采用的标准。

[请不要使用空格代替Tab键!

]

注释

模块注释

在一个程序模块的开始,应用注释说明模块的名字、功能、开发者和日期和版本变更历史,如下所示:

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

*Copyright(c)SuzsoftDotNetGroup

*Description:

Tenantaccessclass

*CreateDate:

2006-06-0205:

03:

46

*Creater:

JohnsonCao

*LastChangeDate:

*LastChanger:

*VersionInfo:

1.0

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

单行注释

程序员应当在算法比较复杂的表达式前、特殊含义的变量前或者在一整段功能代码开始之前添加适当的注释。

我们要求这样的单行注释采用”//”符号,例如:

//CalculatesubTotal

DecimalsubTotal=0;

类注释

在定义一个类之前,应用“///”注释说明类的功能、使用方法和特殊的属性,如下所示:

///<

summary>

///Thisclass...

remarks>

///Pleasenote…

/remarks>

/summary>

详细的xml注释标记的使用请参见附录。

方法注释

在定义类成员方法前,应说明该过程/函数的名字、功能、输入/输出和版本变更历史,如下所示:

///Thismethod….

paramname="

param1"

thisisaparamofthemethodSomeMethod.<

/param>

retvalue>

areturnobject<

/retvalue>

//-------------------------------------------------------------------------------------------------

//ChangeHistory:

//DateWhoChangesMade

//2000-5-1Author1Initialcreation

//2000-5-15Author2Addsomecode

publicobjectSomeMethod(objectparam1)

声明

单行声明变量数

我们推荐每行只声明一个变量,因为这样你可以在声明后面写上该变量的注释,例如:

intlevel;

//indentationlevel

intsize;

//sizeoftable

请不要在同一行声明不同含义的变量,比如:

inta,b;

//Whatis'

a'

?

Whatdoes'

b'

standfor?

上面的例子同样可以说明了没有意义的变量名称会让人很难理解,因此,在定义变量的时候,我们一定要给它们一个有含义的名字。

初始化

最好在一定义后就初始化变量,例如:

stringname=strObject.Name;

or

intval=time.Hours;

注意:

如果你想要初始化对话框变量,建议使用using声明方式

例如:

using(OpenFileDialogopenFileDialog=newOpenFileDialog())

...

类和接口声明

在声明类和接口的时候应当遵照下列规范:

●方法名称和放置参数的括号”(”之间不应该有空格

●类名声明之后应另起一行写作用域开始符”{”

●作用域结束符”}”应当单独占一行,并与对应的开始符”{”处在同一缩进位置上

示例:

ClassMySample:

MyClass,IMyInterface

intmyInt;

publicMySample(intmyInt)

{

this.myInt=myInt;

}

voidInc()

++myInt;

voidEmptyMethod()

功能语句

简单逻辑

每一行代码应当只实现一个逻辑

if-else语句

if-else应该按照这种格式书写:

if(condition)

DoSomething();

}

else

DoSomethingOther();

For/Foreach语句

For循环语句格式:

for(inti=0;

i<

5;

++i)

或者,如果循环只有一个简单执行语句的话:

for(initialization;

condition;

update);

foreach循环格式:

foreach(intiinIntList)

即使循环中只有一句执行语句,我们也要求使用”{}”

While/do-while语句

While循环格式:

while(condition)

对于空循环可以这样写:

while(condition);

do-while循环格式:

do

}while(condition);

Switch语句

switch格式:

switch(condition)

caseA:

break;

caseB:

default:

Try-catch语句

try-catch格式:

try

catch(Exception){}

或者:

catch(Exceptione)

finally

空白

空白行

空白行有增强可读性的作用。

它们隔离了逻辑上相互独立的模块。

●在下列情况中我们还可以使用双空白行:

⏹源文件中的两个独立的逻辑片断之间

⏹类和接口之间(但一般情况下我们还是建议一个文件一个类或接口)

●下列情况中我们可以使用单空白行:

⏹方法之间

⏹属性之间

⏹方法内局部变量第一出声明前

⏹方法内相对独立的逻辑之间

注意,尽量保持空白行和其他行具有同样的缩进,可以使今后插入代码能够保持相同的缩进。

参数条件之间的空白

通过这些空白,可以使代码更容易被阅读,例如:

TestMethod(a,b,c);

而不应该这样:

TestMethod(a,b,c)

但是也不应有过多的空格,比如:

TestMethod(a,b,c);

操作符和变量或数字之间应该有空格:

a=b;

//don'

tusea=b;

for(inti=0;

10;

//don'

tusefor(inti=0;

i<

10;

++i)

//or

//for(inti=0;

i<

++i)

表格式的样式

连续的多行付值语句可以这样子写:

stringstrName="

Mr.Ed"

;

intnValue=5;

TestaTest=Test.TestYou;

利用空格对齐所有的“=”,使代码块看起来像表格一样。

命名规范

大写

4.1.1.1Pascal风格

变量的首字母大写,如:

Name

4.1.1.2骆驼规则

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

testName。

4.1.1.3大写风格

只在少于两个字母的缩写中使用大写。

三个以上字母的缩写都应该使用PASCAL风格。

4.1.1.4缩写

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

●不要将缩写或缩略形式用作标识符名称的组成部分。

例如,使用GetWindow,而不要使用GetWin。

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

●在适当的时候,使用众所周知的缩写替换冗长的词组名称。

例如,用UI作为UserInterface的缩写,用OLAP作为On-lineAnalyticalProcessing的缩写。

●在使用缩写时,对于超过两个字符长度的缩写,请使用Pascal大小写或骆驼大小写。

例如,使用HtmlButton或htmlButton.。

但是,应当大写仅有两个字符的缩写,如,System.IO,而不是System.Io.

●不要在标识符或参数名称中使用缩写。

如果必须使用缩写,对于由多于两个字符所组成的缩写请使用骆驼大小写,虽然这和单词的标准缩写相冲突。

4.1.1.5措词

避免使用与常用的.NETFramework命名空间重复的类名称。

例如,不要将以下任何名称用作类名称:

System、Collections、Forms或UI。

有关.NETFramework命名空间的列表,请参加类库。

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

AddHandler

AddressOf

Alias

And

Ansi

As

Assembly

Auto

Base

Boolean

ByRef

Byte

ByVal

Call

Case

Catch

CBool

CByte

CChar

CDate

Cdec

CDdl

Char

CInt

Class

CLng

CObj

Const

CShort

CSng

CStr

CType

Date

Decimal

Declare

Default

Delegate

Dim

Do

Double

Each

Else

ElseIf

End

Enum

Erase

Error

Event

Exit

ExternalSource

False

Finalize

Finally

Float

For

Friend

Function

Get

GetType

Goto

Handles

If

Impements

Imports

In

Inherits

Integer

Interface

Is

Let

Lib

Like

Long

Loop

Me

Mod

Module

MustInherit

MustOverride

MyBase

MyClass

Namespace

New

Next

Not

Nothing

NotInheritable

NotOverridable

Object

On

Option

Optional

Or

Overloads

Overridable

Overrides

ParamArray

Preserve

Private

Property

Protected

Public

RaiseEvent

ReadOnly

ReDim

Region

REM

RemoveHandler

Resume

Return

Select

Set

Shadows

Shared

Short

Single

Static

Step

Stop

String

Structure

Sub

SyncLock

Then

Throw

To

True

Try

TypeOf

Unicode

Until

volatile

When

While

With

WithEvents

WriteOnly

Xor

eval

extends

Instanceof

package

var

4.1.1.6避免类型名称混淆

不同的编程语言使用不同的术语标识基本托管类型。

类库设计人员必须避免使用语言特定的术语。

请遵循本节中描述的规则以避免类型名称混淆。

使用描述类型的含义的名称,而不是描述类型的名称。

如果参数除了其类型之外没有任何语义含义,那么在这种罕见的情况下请使用一般性名称。

例如支持将各种数据类型写入到流中的类可以有以下方法。

voidWrite(doublevalue);

voidWrite(floatvalue);

voidWrite(longvalue);

voidWrite(intvalue);

voidWrite(shortvalue);

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

voidWrite(doubledoublevalue);

voidWrite(floatfloatvalue);

voidWrite(longlongvalue);

voidWrite(intintvalue);

voidWrite(shortshortvalue);

命名方法

通常我们采用匈牙利命名法来为变量命名。

匈牙利命名法通常采用变量类型的缩写作为前缀,变量含义的全拼作为后缀的方法来命名变量。

这种命名方法被广泛的采用在windows程序开发中,它因由一匈牙利程序员创立而得名。

好的变量命名不是突出其类型,而是突出其含义。

对于UI控件,我们强制要求缩写前缀,例如:

System.Windows.Forms.ButtonbtnCancel;

System.Windows.Forms.TextBoxtxtName;

4.1.1.7页面命名

采用动宾短语的形式。

体现该页面要处理什么功能,如:

AddUser.aspx。

页面的命名规范不要和.net框架的关键字冲突,如:

Login.aspx,<

%@PageLanguage="

C#"

AutoEventWireup="

true"

CodeFile="

Login.aspx.cs"

Inherits="

Login"

%>

Login.cs如下:

publicpartialclassLogin:

System.Web.UI.Page

{

protectedvoidPage_Load(objectsender,EventArgse)

{}

此时的Login.cs的类Login就会和.net框架自带类冲突,必须重新命名:

SysLogin

4.1.1.8命名空间命名

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

CompanyName.TechnologyName[.Feature][.Design]

Microsoft.Media

Microsoft.Media.Design

给命名空间名称加上公司名称或者其他知名商标的前缀可以避免两个已经发布的命名空间名称相同的可能性。

例如,Microsoft.Office是由Microsoft提供的OfficeAutomationClasses的一个适当的前缀。

                  

这只是一个原则。

第三方公司可以选择其它的名字。

  避免用公司名称或其它著名品牌的名称作为名称空间的前缀,这样会造成两个公布的名称空间有同一个名称的可能性。

  例如:

将微软提供的Office自动类命名为Microsoft.Office

  使用Pascal大写方式,用逗号分隔逻辑成分。

Microsoft.Office.PowerPoint

  如果你的品牌使用的是非传统大写方式,那么一定要遵循你的品牌所确定使用的大写方式,即使这种方式背离了通常的名称空间大写规则。

NeXT.WebObjects

     ee.cummings

4.1.1.9类命名

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

●使用Pascal风格.

●谨慎使用缩写命名类。

.

●不要使用任何类前缀(如C).

4.1.1.10接口命名

●使用名词或名词短语命名接口.(例如IComponent或IEnumberable)

●使用Pascal风格

●使用大写的I作为首字母,表示为接口

4.1.1.11枚举命名

●不使用前缀

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1