devNCET程序编码规范说明书.docx
- 文档编号:28107977
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:17
- 大小:31.35KB
devNCET程序编码规范说明书.docx
《devNCET程序编码规范说明书.docx》由会员分享,可在线阅读,更多相关《devNCET程序编码规范说明书.docx(17页珍藏版)》请在冰豆网上搜索。
devNCET程序编码规范说明书
南昌铁路局员工培训系统
程序编码规范说明书
文档编号
R&D-NCET-0003
所属项目
南昌铁路局员工培训系统(Beta1.0)
文档等级
3级
文档密级
绝密
保管期限
永久
归档时间
使用部门
技术研发部
归档部门
办公室
修订记录
记录号
文档文件名
说明
1.
dev_NCET项目编码规范说明_20020911_p_shine.doc
起草版
2.
dev_NCET项目编码规范说明_20020911_m01_shine.doc
修改版
3.
dev_NCET项目编码规范说明_20020917_m02_shine.doc
修改版
4.
dev_NCET项目编码规范说明_20020918_m03_shine.doc
修改版
5.
dev_NCET项目编码规范说明_20020918_m04_shine.doc
修改版
6.
dev_NCET项目编码规范说明_20020920_f_shine.doc
最终版
目录
1.前言3
1.1.目的3
1.2.背景3
1.3.定义、缩略词3
1.4.参照资料3
2.符号与命名4
2.1.包的命名(必须)4
2.2.类的命名(必须)4
2.3.变量的命名4
2.4.方法的命名5
2.5.其它说明:
(推荐)5
3.代码格式5
4.版本号码的格式7
4.1.软件发行版本号码格式7
4.1.1.版本号7
4.1.2.新特征版本号7
4.1.3.维护版本号7
4.2.程序修改版本号码格式8
4.2.1.主版本号8
4.2.2.修改版本号8
4.2.3.重大修改8
5.附:
标准代码样本8
1.前言
1.1.目的
编写目的是为规范软件开发者的代码编写,提高程序可读性,方便程序交流,方便日后维护和更新。
适用读者:
软件客户、软件需求分析人员和软件开发者。
1.2.背景
2002年8月12日,南昌铁路局与我公司达成初步合作意向。
受南昌铁路局委托,我们将按对方要求,开发南昌铁路局员工培训系统。
2002年9月13日,南昌铁路局员工培训系统项目软件需求评审会通过《南昌铁路局员工培训系统项目开发计划R&D-NECT-0001》、《南昌铁路局员工培训系统软件需求说明书R&D-NECT-0002》,项目完成计划阶段,进入设计阶段。
1.3.定义、缩略词
项目(软件系统)名称:
南昌铁路局员工培训系统(Beta1.0);
项目(软件系统)名称英文缩写:
NCET(NanChangEmployeesTraining)(Beta1.0);
任务提出方:
南昌铁路局(客户方);
开发者:
湖北华大网络教育技术有限责任公司;
软件系统使用方:
南昌铁路局;
用户(预设):
南昌铁路局系统管理员,培训辅导员,培训课件制作者、受训学员、访客。
1.4.参照资料
●《南昌铁路局员工培训系统需求开发业务项目视图及范围》,湖北华大网络教育技术有限责任公司,2002年08月
●南昌铁路局员工培训系统用户界面模型,湖北华大网络教育技术有限责任公司,2002年09月
●《南昌铁路局员工培训系统项目开发计划R&D-NECT-0001》,湖北华大网络教育技术有限责任公司,2002年09月
●《南昌铁路局员工培训系统软件需求说明书R&D-NECT-0002》,湖北华大网络教育技术有限责任公司,2002年09月
2.符号与命名
2.1.包的命名(必须)
JDK的标准是——包名称的所有字母均小写
如:
packagemyownpackage;
2.2.类的命名(必须)
DK的标准是——大写一个类名的首字母,若类名由几个单词构成,那么把它们紧靠到一起(也就是说,不要用下划线来分隔名字)。
此外,每个嵌入单词的首字母都要采用大写形式。
类名称应该是一个名词短语。
如:
classZipFileAccesser
2.3.变量的命名
变量命名一般原则(参照匈牙利命名法)(必须)
能清楚表示变量的类型
能简明表达变量的涵义
常量的命名(必须)
常量名称全部大写
如:
publicfinalintPORT=2000;
主要基本类型变量的命名(必须)
主要类型名称缩写格式及规则:
由类型全称取一个字母组成+实际名称
如:
StringstrTemp;
对几种主要的基本类型变量命名前缀的规定(参考微软MSDN标准)
变量类型
前缀
示例
boolean
bln
blnFlag
byte
byt
bytCount
char
chr
chrName
double
dbl
dblTolerance
int
int
intQuantity
long
lng
lngDistancs
String
str
strFirstName
Float
flo
floNumber
静态变量的命名(必须)
静态变量名称以字符串“STATIC”开头
如:
staticintSTATICintNumber;
临时变量的命名(推荐)
临时性变量格式为(类型名称缩写+Temp)
如:
StringstrTemp=”asdf”
对象命名规则:
第一原则:
当对象是由多单词组成,取每个单词的首字母,将其小写形式组合而成变量名称的前缀,当对象是由单个单词组成时,取整个单词的小写形成作为变量名的前缀(必须)
如:
PrintWriterpwTemp;
SocketsocketTemp;
第二原则:
如果这样命名时产生了重复现象,则和类型名称缩写提取原则类似,取三个小写
辅音字母或习惯性的用法,总之以能明显区别类名称为原则(推荐)
如:
ServletResponse和ServletRequest如果按照第一原则,两个对象都可命名为srTemp,产生了重复,此时就应按照第二原则,命名为srpTemp和srqTemp
成员变量的命名
成员变量的命名原则与临时变量相同,但在可能与临时变量名称重复的调用场合,应加上this.以示区别。
推荐:
对大多数成员变量调用的场合加上this.以区别(必须)
如:
publicStringstrUserName;
this.strUserName=strUserName;
2.4.方法的命名
方法名的第一个字母采用小写,其他嵌入单词首字母大写。
方法名应该是一个动宾结构的短语,能够简明恰当的表达出方法完成的操作。
(必须)
如:
publicStringgetStudentName(.);
2.5.其它说明:
(推荐)
一般不允许使用数字和下划线。
如:
socket1,socket_num;
3.代码格式
类/接口的头注释
/**************************************************************************(100个字符)
*@copyright版权信息
*@describe类描述信息
*@author作者信息
*@version版本信息,时间
*@since创自信息
*@modify修改者
*@modifyversiondate/time 修改版本 时间(格式:
2002-09-18 15:
30)
**************************************************************************/(100个字符)
方法的头注释
/*
*@param
*@return
*@throws
*/
注:
每个参数名后必须有相应的说明,格式如下
[变量说明变量名]
如:
*@paramintCounter计数器
*@paramstrName变量名称
*@paramblnFlag标志位
返回值不必写类型,如果没有返回值或者返回值是void就不写@return
如:
*@return当前的计数值
异常要逐个分行写出,
如:
*@throwsIOException如果发生I/O错误
*@throwsZIPException如果发生ZIP文件错误
代码分隔
import.
空一行
package.
空一行
class……
域/属性与方法之间空一行,方法与方法之间空一行,类与类之间空一行。
先写公有属性,后写保护属性,最后写私有属性。
在方法内部,几行关系紧密的代码之间应该不空行,但两个相对独立的代码块之间应空一行。
一般,在方法内部每隔3~5行就应有一个空行。
两个相邻空行之间的一段代码为一个代码块,每隔代码块前面应有行注释。
构造子必须放在其他所有方法前
运算符两边要加一个空格
如:
intTotal=intAvg*intNum;
括号两边内侧要各加一个空格
如:
voidmain(String[]args);
方法结束要在最后的大括号后加上
//方法名()
类结束要在最后的大括号后加上
/*类名*/
如:
……
publicclassZipFileAccesser
{
publicstaticvoidmain(stringargs[])
{
}//main()
}/*ZipFileAccesser*/
流程控制语句结束要在最后的大括号后加上
//语句名
:
if(intA==intB)
{
……
}//if
一行代码只允许有一条语句,而且{和}必须独占一行,类起始{可以和类名称在同一行,也可以另起一行
减少public域的定义,尽量通过方法而不是通过对象的实例直接访问对象的域,并且所有的成员域必须加以说明
如:
StringstrUserName;//用户名称
代码缩进原则
类名、类体、方法体依次缩进一个单位长
一个单位长是四个空格(可设为一个TAB长)
4.版本号的格式
4.1.软件发行版本号格式
以下示例说明版本号码格式,如某软件版本号1.0.0
4.1.1.版本号
最普通的标识号,表示软件的主要功能版本并包含非常重要的新的功能。
4.1.2.新特征版本号
代表新特性方面的版本级别。
4.1.3.维护版本号
代表维护方面的版本级别。
其中可能包含一些新的特征。
4.2.程序修改版本号格式
4.2.1.主版本号
主版本号一般以1开始,单步递增,小数点后为修改版本。
4.2.2.修改版本号
修改版本号,一般以0开始,单步递增。
修改版本号整数部分为此文件创建这定义的主版本号,小数部分为修改者定义的修正版本号,为一位小数。
只有文件创建者才能修改主版本号,并且主版本号的修改必须是在有重大改变或累计多次修改之后才能变动。
4.2.3.重大修改
定义的包名、类名、属性、函数、过程、方法及其他名称有更改的;程序文件代码修改率超过30%,都为重大修改范畴。
5.附:
标准代码样本
importjava.io.*;
importjava.util.zip.*;
/*****************************************************************************************
*@copyright?
2002 湖北华大网络教育技术有限责任公司
*@describe负责对ZIP文件的访问操作,可以对一个目录进行ZIP格式的压缩和解压。
*@authorvadsruff
*@version1.0.02002-09-1809:
00
*@sincejdk1.3
*@modify:
shine
*@modifyversiondate/time1.0.12002-09-1810:
30
*****************************************************************************************/
publicclassZipFileAccesser
{
privateZipOutputStreamzosTemp;
privateZipInputStreamzisTemp;
privateStringstrDirectoryPath;
privateStringstrZipFilePath;
/**
*将一个ZIP格式文件解压成一个目录
*@paramstrInputZipFilePathZIP文件路径
*@paramstrInputDirectoryPath目录路径
*@throwsIOExceptionifaZIPfileerrorhasoccurred
*@throwsZipExceptionifanI/Oerrorhasoccurred
*/
publicvoidconvertAZipFileToADirectory(StringstrInputZipFilePath,StringstrInputDirectoryPath)throwsException
{
//生成根目录
(newFile(strInputDirectoryPath)).mkdir();
//初始化ZIP输入流
this.zisTemp=newZipInputStream(newFileInputStream(strInputZipFilePath));
//扫描ZIP文件,完成文件、目录结构的生成
scanZipFile(strInputDirectoryPath+"/");
//关闭ZIP输入流
this.zisTemp.close();
}//convertAZipFileToADirectory()
/**
*扫描ZIP文件,读取所有入口,生成
*@paramstrInputDirectoryPath当前根目录路径
*@throwsIOExceptionifaZIPfileerrorhasoccurred
*@throwsZipExceptionifanI/Oerrorhasoccurred
*/
privatevoidscanZipFile(StringstrInputDirectoryPath)throwsIOException,ZipException
{
ZipEntryzeTemp;
FilefileTemp;
intintTemp;
//遍历ZIP的所有入口点
while((zeTemp=this.zisTemp.getNextEntry())!
=null)
{
fileTemp=newFile(strInputDirectoryPath+zeTemp.getName());
//如果当前的ZIP入口点是目录,则生成相应路径的目录;否则读取数据,写入文件
if(zeTemp.isDirectory())
fileTemp.mkdir();//对ZIP文件中的目录入口点生成相应目录
else
{
//新生成文件
FileOutputStreamfosTemp=newFileOutputStream(fileTemp);
//读取ZIP入口点的数据,写入文件
while((intTemp=this.zisTemp.read())!
=-1)
fosTemp.write(intTemp);
//关闭文件输出流
fosTemp.close();
}//else
this.zisTemp.closeEntry();//关闭ZIP入口点,以便于生成新的入口点
}//while
}//scanZipFile();
/**
*将一个目录压缩成一个ZIP格式文件
*@paramstrInputZipFilePathZIP文件路径
*@paramstrInputDirectoryPath目录路径
*@throwsIOExceptionifanI/Oerrorhasoccurred
*@throwsZipExceptionifaZIPfileerrorhasoccurred
*/
publicvoidconvertADirectoryToAZipFile(StringstrInputZipFilePath,StringstrInputDirectoryPath)throwsException
{
//初始化目录路径
this.strDirectoryPath=strInputDirectoryPath;
//初始化ZIP输出流
this.zosTemp=newZipOutputStream(newFileOutputStream(strInputZipFilePath));
//扫描ZIP文件,完成文件、目录结构的生成
scanDirectory(strInputDirectoryPath);
//关闭ZIP输出流
this.zosTemp.close();
}//convertADirectoryToAZipFile()
/**
*扫描目录,将目录下所有文件/目录写入ZIP格式文件
*@paramstrlnputDirectoryPath目录路径
*@returnvoid
*@throwsIOExceptionifanI/Oerrorhasoccurred
*@throwsZipExceptionifaZIPfileerrorhasoccurred
*/
privatevoidscanDirectory(StringstrInputDirectoryPath)throwsIOException,ZipException
{
FilefileTemp=newFile(strInputDirectoryPath);
StringstrList[]=null;
ZipEntryzeTemp;
StringstrTempPath=null;
//如果输入的是目录,则进行目录扫描操作
if(fileTemp.isDirectory())
{
//获取当前目录下的所有文件列表
strList=fileTemp.list();
//逐个扫描当前目录下的所有文件
for(inti=0;i { strTempPath=strInputDirectoryPath+"/"+strList[i]; //如果是当前文件是目录,则在ZIP文件中生成目录入口点,同时进行递归扫描,否则压入文件数据 if((newFile(strTempPath)).isDirectory()) { //新生成ZIP入口点时,滤掉根目录,以免生成的ZIP文件中多了一层根目录zeTemp=newZipEntry(strTempPath.substring(this.strDirectoryPath.length()+1)+ "/"); this.zosTemp.putNextEntry(zeTemp); this.zosTemp.closeEntry(); scanDirectory(strTempPath); }//if else { //新生成ZIP入口点时,滤掉根目录,以免生成的ZIP文件中多了一层根目录 zeTemp=newZipEntry(strTempPath.substring(this.strDirectoryPath.length()+1)); this.zosTemp.putNextEntry(zeTemp); FileInputStreamfisTemp=newFileInputStream(strTempPath); intintTemp; //读入文件数据,压入ZIP文件中 while((intTemp=fisTemp.read())! =-1) this.zosTemp.write(intTemp); fisTemp.close();//关闭文件输入流 this.zosTemp.closeEntry();//关闭ZIP入口点,以便于生成新的入口点 }//else }//for }//if }//scanDirectory() /** *主控方法 *@paramargs[]命令行参数入口(程序中未用) *@throwsOExceptionanI/Oerrorhasoccurred *@throwsipExceptionaZIPfileerrorhasoccurred */ publicstaticvoidmain(Stringargs[])throwsIOException,ZipException { System.out.println("请您输入文件名: "); StringstrZipFilePath=(newBufferedReader(newInputStreamReader(System.in))).readLine(); System.out.println("请您输入目录名: "); StringstrDirectoryPath=(newBufferedReader(newInputStreamReader(System.in))).readLine(); //将ZIP文件解压到制定目录中 (newZipFileAccesser()).convertAZipFileToADirectory(strZipFilePath,strDirectoryPath); //将指定目录压缩到指定ZIP文件中 //(newZipFileAccesser()).convertADirectoryT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- devNCET 程序 编码 规范 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)