软件编程规范大全.docx

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

软件编程规范大全.docx

《软件编程规范大全.docx》由会员分享,可在线阅读,更多相关《软件编程规范大全.docx(89页珍藏版)》请在冰豆网上搜索。

软件编程规范大全.docx

软件编程规范大全

软件编程规范大全

产品编码规范书

一、书写格式

代码书写格式整齐统一、、层次清晰便于阅读。

●缩进TAB键统一为4个空格

●赋值语句(=)及逻辑判断符(>

=&&||...etc)左右各空一格

●算术运算符左右各空一格

●if/while/switch之类的语句右边空一格

●每个成员函数内部各个子功能之间用一个空行

●公用成员放在程序的最前面,私用成员在后。

二、恰当地使用注释

注释应简洁、清楚。

●不提倡使用/*和*/来注释,最好使用//来注释。

如果是对某一段程序(算法/结构)的注释,在程序头直接用//再空一格来进行说明,一行不要超过80字符

●注释就占程序的30%,如10行代码中就有不小于3行的注释。

三、关于命名

1、变量的命名

除了循环变量i,j,k...之外,文件、类、(成员)变量、(成员)函数的命名要有意义,大小写相间,一目了然;

成员变量、函数(Method)的首字母小写

全局变量名称以“g_”开头。

2、.类的命名和定义

自定义的类(包括Servlet、Bean)的首字母为大写。

在程序中引用时,其对变量名的首字母小写

Servlet、Bean定义名称时,其末尾应加上ServletBean后缀。

以便于区分。

如:

(GetNewGuest.class)

……

GetNewGuestgetNewGuest=newGetNewGuest();

……

ArticleBeanarticleBean=null;

包(package)名均为小写。

格式为:

com.founder.<项目名>.<模块名>

3、匈牙利命名法

命名时可以遵循匈牙利命名法

它通过在数据和函数名中加入额外的信息以增进程序员对程序的理解。

如字符串,前面加上str;.

StringstrTemp=newString(“Thisis……”);

如果定义两个实例,可以这样合起来写:

MyClassmyClassTemp1,myClassTemp2;

四、局部变量一定要初始化

如果你声明一个变量,不要以为编译器会自动将之赋零值!

你随手给它赋个初值并不麻烦,却会使程序更可靠,

floatfTemp=0.0;

五、.成员函数:

成员函数的功能一定要单一;

实现其功能时不要过分追求技巧,

函数体不能过长

六、.数组和缓冲区的使用

对数组和缓冲区进行检查,防止越界,尤其是变长的情况下

七、.尽量不要用goto语句

特别谨慎使用goto语句,最好别用它

尽管goto语句在某些特殊的情况下(比如编译器中)还很管用,但它破坏了整个程序的结构,尤其使用goto嵌套时,更让人一头雾水(很久以前就有人提出取消它)。

所以不到万不得已时刻不要用它,

可以用break,continue之类的语句替代之。

八、数应该是单人口、单出口的

所有成员函数尽量是单入口,单出口

也许多出口的程序写起来更简洁,意义也更明了。

但出了问题调试时会很难定位,所以宁可多用一些BOOL变量,多加些判断,保证单出口:

例如:

publicStringgetValue(intvalue)

{

if(value>0)

{

return“xxxx……T”;;

……

return;“aaa……”;

}

可以写成:

……

publicStringgetValue(intvalue)

{

Stringreault=null;

if(ivalue>0)

{…

result=“xxxx……”;

}

else

{

result=“aaaa……”;

}

returnbRet;

}

九、调用函数应合法

调用函数时要严格按照接口规范

严格按照函数的输入要求给它合适的参数

十、.单元测试

自己做代码内部(单元)测试时,必须做到语句覆盖,并且特别要注意边界值的覆盖

要让每个语句都被执行过,并且边界值(最大和最小)也被测试过。

你在程序中写的各种情况都可能在用户那里出现

十一、静态检查

代码写完后要尽可能多的做一些静态检查(Debug调试可是很费神费时的)。

尤其是对算法和数据管理(比如对文件存取)部分

十二、文件存放

代码文件的存储位置固定,图片文件存放在统一的目录Picture下,如果各个模块有自己的图片文件,可以创建子目录来完成。

公用函数脚本文件放在统一的目录Scripts下。

每个功能模块创建一个JSP文件存放目录。

结束语:

希望大家在遵守规范的前提下,通过自己的努力,开发出功能齐备、风格统一、性能稳定的一流软件产品。

VB、VC编码规范

1VB部分

1.1控件前缀

控件类型

前缀

例子

3DPanel

pnl

PnlGroup

Animatedbutton

ani

AniMailBox

Checkbox

chk

ChkReadOnly

Combobox,drop-downlistbox

cbo

CboEnglish

Commandbutton

cmd

CmdExit

Commondialog

dlg

DlgFileOpen

Communications

com

ComFax

Control

ctr

CtrCurrent

Datacontrol

dat

DatBiblio

Data-boundcombobox

dbcbo

DbcboLanguage

Data-boundgrid

dbgrd

DbgrdQueryResult

Data-boundlistbox

dblst

DblstJobType

Directorylistbox

dir

DirSource

Drivelistbox

drv

DrvTarget

Filelistbox

fil

FilSource

Form

frm

FrmEntry

FormObjectVariable

frmO

FrmOEntry

Frame

fra

FraLanguage

Gauge

gau

GauStatus

Graph

gra

GraRevenue

Grid

grd

GrdPrices

Horizontalscrollbar

hsb

HsbVolume

Image

img

ImgIcon

Keystatus

key

KeyCaps

Label

lbl

LblHelpMessage

Line

lin

LinVertical

Listbox

lst

LstPolicyCodes

MAPImessage

mpm

mpmSentMessage

MAPIsession

mps

mpsSession

MCI

mci

mciVideo

MDIchildform

mdi

mdiNote

Menu

mnu

mnuFileOpen

MSFlexgrid

msg

msgClients

MSTab

mst

mstFirst

OLE

ole

oleWorksheet

Outline

out

outOrgChart

PenBedit

bed

bedFirstName

PenHEdit

hed

hedSignature

Penink

ink

inkMap

Picture

pic

picVGA

Pictureclip

clp

clpToolbar

Report

rpt

rptQtr1Earnings

Shape

shp

shpCircle

Spin

spn

spnPages

Textbox

txt

txtLastName

Timer

tmr

tmrAlarm

UpDown

upd

updDirection

Verticalscrollbar

vsb

vsbRate

Slider

sld

sldScale

ImageList

ils

ilsAllIcons

TreeView

tre

treOrganization

Toolbar

tlb

tlbActions

TabStrip

tab

tabOptions

StatusBar

sta

staDateTime

ListView

lvw

lvwHeadings

ProgressBar

prg

prgLoadFile

RichTextBox

rtf

rtfReport

1.2数据访问对象(DAO)前缀

数据库对象

前缀

例子

Container

con

conReports

Database

db

dbAccounts

DBEngine

dbe

dbeJet

Document

doc

docSalesReport

Field

fld

fldAddress

Group

grp

grpFinance

Index

idx

idxAge

Parameter

prm

prmJobCode

QueryDef

qry

qrySalesByRegion

Recordset

rec

recForecast

Relation

rel

relEmployeeDept

TableDef

tbd

tbdCustomers

User

usr

usrNew

Workspace

wsp

wspMine

 

1.3菜单前缀

菜单控件除了最前面"mnu"标记以外,菜单控件的前缀应该被扩展:

对每一级嵌套增加一个附加前缀,将最终的菜单的标题放在名称字符串的最后。

下表列出了一些例子。

菜单标题序列

菜单处理器名称

File

mnuFile

FileOpen

mnuFileOpen

FileSend

mnuFileSend

FileSendEmail

mnuFileSendEmail

FileSendFax

mnuFileSendFax

当使用这种命名约定时,一个特定的菜单组的所有成员一个接一个地列在VisualBasic的“属性”窗口中。

而且,菜单控件的名字清楚地表示出它们所属的菜单项。

1.4其它控件前缀

对于上面没有列出的控件,应该用唯一的由两个或三个字符组成的前缀使它们标准化,以保持一致性。

只有当需要澄清时,才使用多于三个字符的前缀。

例如,对于派生的或修改的控件象上述那样扩展其前缀,使得在真正使用了哪一个控件的问题上避免混淆。

对于第三方控件,应该把制造商的小写缩写名附加到前缀中。

例如,从VisualBasicProfessional3D框架中创建的一个控件实例可以用fra3d这样的前缀,以避免混淆所使用的控件。

1.5变量、常量范围前缀

范围

前缀

例子

全局

g

gstrUserName

模块级

m

mblnCalcInProgress

本地到过程

dblVelocity

 

1.6变量、常量类型前缀

数据类型

前缀

例子

Boolean

bln

blnFound

Byte

byt

bytRasterData

Collection

col

colWidgets

Currency

cur

curRevenue

DateTime

dtm

dtmStart

Double

dbl

dblTolerance

Error

err

errOrderNum

Integer

int

intQuantity

Long

lng

lngDistance

Object

obj

objCurrent

Single

sng

sngAverage

String

str

strFName

Userdefinetype

udt

udtEmployee

Variant

Vnt

vntCheckSum

1.7描述变量和过程名

变量或过程名的主体应该使用大小写混合形式,并且应该足够长以描述它的作用。

而且,函数名应该以一个动词起首,如InitNameArray或CloseDialog。

对于频繁使用的或长的项,推荐使用标准缩略语以使名称的长度合理化。

一般来说,超过32个字符的变量名在VGA显示器上读起来就困难了。

当使用缩略语时,要确保它们在整个应用程序中的一致性。

在一个工程中,如果一会儿使用Cnt,一会儿使用Count,将导致不必要的混淆。

1.8用户定义的类型

在一项有许多用户定义类型的大工程中,常常有必要给每种类型一个它自己的三个字符的前缀。

如果这些前缀是以"u"开始的,那么当用一个用户定义类型来工作时,快速识别这些类型是很容易的。

例如,ucli可以被用来作为一个用户定义的客户类型变量的前缀。

1.9代码注释约定

1.9.1代码注释规范

模块节标题注释如下:

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'@ModuleName:

(模块名称)

'@MainFunc:

(模块说明)

'@Author:

(作者)

'@LastModify:

(最后修改时间)

'@Include:

(引用外部接口)

'@Interface:

(模块提供接口)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

举例:

frmAccountCard.frm的程序头注释如下

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'@ModuleName:

frmAccountCard

'@MainFunc:

科目卡片窗体

'@Author:

张山

'@LastModify:

2000-06-24

'@Include:

'@Interface:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

程序接口注释:

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'@FunctionName:

(函数名)

'@MainFunc:

(函数说明)

'@Author:

(作者)

'@LastModify:

(最后修改日期)

'@Param:

(用参数)

'@Returns:

(返回值类型)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

举例:

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'@FunctionName:

AddAccount

'@MainFunc:

直接增加会计科目

'@Author:

张山

'@LastModify:

2000-06-23

'@Param:

strAccount科目字符串

'@Param:

strPath科目币种数据所在路径

'@Param:

blnIsCopy由科目复制来标志

'@Returns:

Integer

''

1.10窗体隐含全局变量

避免使用窗体隐含全局变量,声明自己的窗体变量(例如,DimdlgAboutAsNewfrmAboutBox)。

1.11命名属性、方法和事件

尽量用完整的词,不用缩写。

缩写可能有许多形式,并因此可能含混。

如果完整的单词太长的话,可以用完整的第一个音节。

对于标识符,可以用大小写混合的写法,每个单词或者音节的首字符大写,例如ShortcutMenus或者AsyncReadComplete。

对于集合类名,可以用复数写法。

如果集合中有以"s"结尾的对象,可将单词"Collection"附加在其后面。

对于方法名,可以比较一致地用动词/对象或者对象/动词的顺序。

也就是说,使用InsertWidget、InsertSprocket,等等,或者总是将对象放在前面,就象例子WidgetInsert和SprocketInsert那样。

1.12常数使用

在VB中已经定义了常数的情况下,必须采用常数,避免采用数值的使用对程序可读性产生不良影响。

可以明显看出以下代码的优劣:

frmWizard.ShowVBModalfrm1.Show1

MsgBox"Infomation","Title",VBInformationMsgBox"","",1

1.13MsgBox书写要求

消息框要求显示的信息分为四类:

信息,问题,警告,错误。

所有显示的消息框都必须包含上述四类之一的图标;消息框显示的标题代表所运行的程序模块标题,必须用汉字标题,内容为详细的具体信息;

如果是对数据范围非法的警告,必须提示出合法的边界值。

例如用户输入登录时间时提示“登录时间非法”,用户尝试两三次其他时间后仍然无法正确登录,必然对使用软件失去信心,如果直接提示出允许的登录时间范围,用户马上就可以录入正确的数据。

对于数值的确认,需要提示出需要的数据值。

推荐的例子:

MsgBox“请确认是否删除本分录(109)?

”,“凭证处理”,VBQUESTION+VBYESNOCANCEL

MsgBox“张出纳,您没有帐册查询权限!

”,“帐册查询”,VBEXCLAMATION

MsgBox"登录时间不能超过帐套结束时间1999-12-31!

",App.Title,VBEXCLAMATION

1.14SQL语句书写要求

SQL语句要求将SQL保留字全部采用大写,其余部分如字段名、表名等采用其自然定义的大小写格式,推荐采用大写开头字符的方式;语句中的分隔只需要一个空格。

对于条件嵌套复杂的语句,需要在逻辑表达式中加入适当的括号对体现层次,增强语句可读性。

例如:

SELECT*FROMEmployeeWHERE(lngBirthYear>1980ANDstrNameLIKE“A*”)ORDERBYDepartment

为了提高程序可读性,要求必须注释说明每个SQL语句的功能。

1.15源程序编排

源程序编排必须按照结构化程序进行缩格。

缩格要求用一个TAB体现一个结构层次,每个TAB设置为占用4个空格。

每条语句的右边界尽量保持在80个字符范围内,以在编辑器中浏览时不需要横向滚动为宜。

较长的语句要求进行分割。

1.16源文件命名

原则上源文件与对象命名相同,由于文件具有后缀标识文件类别,因此取消对象类别前缀,仅取对象名作为文件名。

例如:

frmMainMain.frm

clsAccountSetupAccountSetup.cls

modPublicPublic.bas

1.17资源ID

CaptionResourceID、ToolTipTextResourceID、HelpContextID、WhatsThisHelpID、WizardStringID、WizardPictureID、WizardSoundID、WizardAVIID等一致,只是偏移量不同,其存储位置优先顺序:

HelpContextID、WhatsThisHelpID、Tag。

2VC部分

2.1C++类的定义形式约定表

类名称:

数据成员:

构造/析构函数:

成员函数:

ClassmyClass

{

public|private|protected:

myDataMembers;

public|private|protected:

myClass();

~myClass();

public|private|protected:

myMemberFunction();

};

 

2.2头文件的书写顺序约定表

 

程序注释及变动说明

文件头:

包含的头文件:

符号常数和全局常数:

宏定义:

类型定义:

结构,联合和类定义:

外部变量的声明:

内联函数的定义:

//

#include

const

macro

typedef

struct|union|class

2.3源文件的书写顺序约定表

文件头:

包含的头文件:

私有符号常数和全局常数:

私有宏定义:

私有类型定义:

私有结构,联合和类定义:

外部/全局变量初始化:

函数/成员函数定义:

“程序头书写标准”

#include

const

macro

typedef

struct|union|class

2.4标识符命名约定表

标识符种类

书写规范

示例

函数/过程名

一般标识符

CheckButtonStates

宏标识符

大写标识符

SALES_TAX

类标识符

‘C’+一般标识符

CEditBox

结构标识符

‘S’+一般标识符

SMyStructure

联合标识符

‘U’+一般标识符

UMyUnion

整数标识符

‘i/n/int’+一般标识符

INumber,intCurrent

字符串标识符

‘s/str/lpstr’+一般标识符

sComputerName

逻辑标识符

‘b’+一般标识符

bisDetailed

对象标识符

特征小写字母+一般标识符

FrmStatus,tvwTree

一般标识符:

字母开头,各单词连写,词首字母大写

大写标识符:

字母开头,所有字母大写,单词间用下划线相连

2.5函数头说明规范

函数名称:

函数功能:

调用格式:

参数说明:

对环境引用:

对环境影响:

内部变量说明:

调用函数列表:

被调函数列表:

函数的中文名称

简述函数的功能

必要时可举例说明

列出主要的、不易理解的参数含义和取值范围

(可选的)

(可选的)

(可选的)

(可选的)

(可选的)

2.6修改申明

本编码规范目前是针对开发根据VB和VC来编制的,随着需要的开发工具的变化,本规范的内容也需要做相应更新。

若发现本编码规范有遗漏或不足或者错误之处,允许以各种形式反映到品质管理部,并由其修改模板。

3窗体和控件的取名:

详见命名标准

严禁和受到限制的关键字同名

4显式声明变量

在类模块、窗体模块或标准模块的声明段中加入这个语句:

OptionExplicit

5为便于阅读程序,禁止使用VB的“字符串和数字的自动转化功能”

VB中规定:

如果字符串表示数值,则可将字符串赋予数值

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

当前位置:首页 > 法律文书 > 调解书

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

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