软件开发编码规范JAVASQL.docx
- 文档编号:30124173
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:18
- 大小:46.66KB
软件开发编码规范JAVASQL.docx
《软件开发编码规范JAVASQL.docx》由会员分享,可在线阅读,更多相关《软件开发编码规范JAVASQL.docx(18页珍藏版)》请在冰豆网上搜索。
软件开发编码规范JAVASQL
系统开发规范
编制:
莫小明
版本历史
目录
1概述3
1.1.内容3
1.2.编写目的3
1.3.阅读对象3
2java编码命名规范4
2.1Package的命名4
2.2Class的命名4
2.3变量及方法命名4
2.4StaticFinal变量的命名4
2.5参数的命名5
2.6数组的定义及命名5
2.7方法的参数5
2.8内部循环变量的命名5
2.9JavaBean规范5
3java注释规范6
3.1单行注释6
3.2类注释6
3.3方法注释7
3.4变量注释8
4java编码排版规范8
4.1=间的空格8
4.2空行8
4.3换行9
4.4缩进9
4.5声明9
4.6括号10
5java编码格式约定10
6数据库编码命名规范12
6.1大小写说明12
6.2数据库表命名12
6.3视图命名12
6.4自定义函数命名12
6.5PL/SQL存储过程命名12
6.6JAVA存储过程命名12
6.7数据库包命名13
6.8自定义类型命名13
6.9字段名命名13
6.10字段别名13
7数据库SQL语句格式13
7.1大小写说明13
7.2INSERTINTO语句14
7.3UPDATE语句14
7.4SELECT语句14
8补充说明异常抛出15
8.1Service层异常的抛出15
8.2控制层异常的处理16
9方法修饰说明16
10调用过程说明17
1概述
1.1.内容
本规范说明书从大方面来说包括:
java编码规范、数据库表、字段等的命名、SQL语句排版,以及后面补充的一些说明。
1.2.编写目的
编码规范对于程序员而言尤为重要,有以下几个原因:
Ø一个软件的生命周期中,80%的花费在于维护。
Ø几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。
Ø编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码,增加可读性,减少项目组中因为换人而带来的损失。
Ø如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品。
1.3.阅读对象
本规范说明书阅读对象可以是开发人员、设计人员、测试人员、审查代码人员。
2java编码命名规范
2.1Package的命名
Package的名字应该都是由一个小写单词组成。
例如:
packagecom.soa.service.bi.fi;
packagecom.soa.service.sox4;
2.2Class的命名
Class的名字必须由大写字母开头而其他字母都小写的单词组成,对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母,一般使用名词命名。
publicabstractclassAbstractSox4Service{
/*内容*/
}
2.3变量及方法命名
变量的名字必须用一个小写字母开头。
后面的单词用大写字母开头。
变量一般使用名词命名,方法名一般使用动词命名,并带有一定的意义,让人一读就懂;再者对于业界认可的单词或固有名词,可直接使用。
EG变量:
userName,方法名:
getUserInformation、addNews
2.4StaticFinal变量的命名
staticFinal变量的名字应该都大写,并且指出完整含义(给出出注释)。
//DBConfigPATH
publicstaticfinalStringDB_CONFIG_FILE_PATH="com.neu.etrain.dbconfig";
2.5参数的命名
参数的名字必须和变量的命名规范一致。
2.6数组的定义及命名
数组应该总是用下面的方式来命名:
byte[]buffer;而不是:
bytebuffer[];
2.7方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
setCounter(intsize)
{
this.size=size;
}
2.8内部循环变量的命名
Ø请不要用i、j、n等没有意义的变量命名;
Ø不要怕麻烦,请使用带有意义的单词命名;
Ø如:
userListSize、rowLength等来命。
2.9JavaBean规范
Ø一个javaBean类必须是一个公共类,类都得设置为public;
Ø一个javaBean类必须有一个空的构造函数,必须有一个不带有参数的公用构造器。
此构造器也应该通过调用各个特性的设置方法来设置特性的缺省值;
Ø一个javaBean类不应有公共实例变量,类变量都为private,变量的命名上面已经说明清楚;
Ø持有值应该通过一组存取方法(getXxx和setXxx)来访问,对于需要的每个特性,应该有一个带有匹配公用getter和setter方法的专用实例变量。
3java注释规范
2
3
3.1单行注释
注释要简单明了。
//用户名
StringuserName=null;
3.2类注释
/**
*
*功能描述:
写上你的描述,至少能看懂本类是做什么的,有哪些功能
*
*@see
*与该类相关的类,写出具体的路径:
包括完整的包名和类名.java
*
*@author(作者)写上你的姓名
*
*@company(开发公司)重庆斯欧(SOA)信息技术有限公司
*
*@copyright(版权)本文件归属重庆斯欧(SOA)信息技术有限公司所有
*
*@since(该版本支持的JDK版本):
1.5
*
*@version(版本)
*
*@date(开发日期)写上编写日期
*
*@modify(修改)
*
第一次修改:
时间、修改人;修改内容简介
*
第二次修改:
时间、修改人;修改内容简介
*
第三次修改:
时间、修改人;修改内容简介
*
*@Review(审核人):
*
*/
3.3方法注释
/**
*方法描述
*@paramargsarrayofstringarguments
*@returnNoreturnvalue
*@exceptionexceptionsNoexceptionsthrown
*/
publicstaticvoidmain(String[]args)
{
System.out.println(“Helloworld!
”);
}
如上示例,必须有:
Ø方法功能的基本描述
Ø每个参数的说明
Ø异常的说明
Ø返回值的说明
3.4变量注释
对于普通变量的注释:
//用户姓名
Stringusername=“xyz”;
//用户姓名
Stringusername=“xyz”;
对于类变量的注释:
/**XXXXXX*/
Stringusername=“xyz”;
4java编码排版规范
4
4.1=间的空格
关键词和变量,变量和操作符之间加一个的空格
Optionsopt1=null;
4.2空行
空行将逻辑相关的代码段分隔开,以提高可读性。
下列情况应该总是使用两个空行:
Ø一个源文件的两个片段(section)之间
Ø类声明和接口声明之间
下列情况应该总是使用一个空行:
两个方法之间
Ø方法内的局部变量和方法的第一条语句之间
Ø块注释或单行注释之前
Ø一个方法内的两个逻辑段之间,用以提高可读性
4.3换行
当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之:
Ø在一个逗号后面断开
Ø在一个操作符前面断开
Ø宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开
4.4缩进
对不同级别缩进一个TAB
4.5声明
推荐一行一个声明,因为这样以利于写注释。
亦即,
//indentationlevel
intlevel;
//sizeoftable
intsize;
要优于,
intlevel,size;
不要将不同类型变量的声明放在同一行,例如:
intfoo,fooarray[];//WRONG!
4.6括号
花括号的的开始和结束均独占一行,并上下对齐
5java编码格式约定
1.import语句导入详细的类名,而不是整个目录
Eg:
importmon.database.DataBase;
importmon.exception.DBException;
importcom.soa.service.bi.AbstractBIService;
2.每个类、成员变量、函数都必须加注释。
注释的格式遵照上面的“注释规范”
3.已经发布的代码中,不允许出现大块的功能性注释。
如果不需要该功能,请直接在代码中删除。
4.请在已经发布的代码中去掉用于调试的任何代码。
5.请在已经发布的代码去除所有未使用变量和函数。
6.每一个成员变量、方法体内变量和成员函数都必须指定其作用域。
关于作用域,在一些不太重视代码质量的人的代码里会发现,一切的变量均在类里的开头一次性定义完,或者更是极为不负责任的创建一大堆的对象,谈到对象的创建,在这里说明一下java的运行机制,举例:
PublicclassA{}
PublicclassBextendsA{
B(){
Aa=NewA();
}
}
PublicclassCextendsB{
C(){
Aa=NewA();
Bb=newB();
}
}
这是一段很小的代码,C继承B,B又继承A(事实上A还继承了Object)。
当调用C的时候,在C的构造函数里初始化了A和B,然后程序马上又跑到B里执行,当在B里的时候又发现B的构造函数里初始了A,然后又要执行A的动作,A现在没任何动作,假设A的构造函数里又有一段比较复杂的代码,那么这个程序将花费大量时间在执行。
而在C里,我们也没有执行具体的任务,仅仅是进入到C的状态就做了那么多的事情。
所以,在一般情况下,我们都不建议一次性做数据的初始化(除非系统非常强烈的要求),我们建议以实际情况进行分析,合理的安排作用域是有好处的。
这样可以很好的维护,也可以提高不少的性能问题,同时也可以排除过多的定义而导致混杂不清的错误。
同样,在方法体内,依然存在局部多用域问题,平时要小心、认真为妙。
7.为避免虚拟机差异,在声明类的成员变量时,如果不指定其值,应该让其置空;
Eg:
privateDatastorecodeDs=null;
8.通常情况下。
应该使用log4j来输出信息、而不是直接使用System.out;
9.在构造SQL时,短小的sql语句尽量使用“+”,而长度较大的SQL使用StringBuffer的append方法;
10.方法内需要打印信息,请直接使用log.info(……)方法输出;
11.方法内打印多个测试数据(如:
list、map等对象数据)可使用Sys.print或Sys.println方法,不提倡使用sysout.out.print;
6数据库编码命名规范
5
6
6.1大小写说明
有关数据库的命名都是用大写。
6.2数据库表命名
任何表必须以:
SOA_开头,结尾为:
_T
例如:
SOA_BI_FIXED_ASSET_T(固定资产规模趋势表)
6.3视图命名
SOA_开头,结尾为:
_V
例如:
SOA_BI_USER_V(固定资产规模趋势视图)
6.4自定义函数命名
SOA_开头,结尾为:
_F
例如:
SOA_BI_USER_INFO_F
6.5PL/SQL存储过程命名
SOA_开头,结尾为:
_P
例如:
SOA_BI_USER_INFO_P
6.6JAVA存储过程命名
SOA_开头,结尾为:
_J
例如:
SOA_BI_USER_J
6.7数据库包命名
SOA_开头,结尾为:
_PKG
注:
在ORACLE中合理的利用包可以更易于维护、使得整体结构更加清晰、执行效率更高。
6.8自定义类型命名
以SOA_开头,以_CT(代表自定义类型)结尾
示例:
SOA_BI_USER_ADMIN_CT
SOA_BI_USER_COMMON_CT
6.9字段名命名
Ø以英文名命名
Ø对于多个单词组合的情况,以“_”分隔
Ø单词长度大的使用标准简称
Ø字段名应该在15字母以内
Ø字段不使用别名
示例:
USER_NAME(用户名)
USER_PWD(用户密码)
6.10字段别名
7数据库SQL语句格式
7
7.1大小写说明
SQL语句必须全部用大写字母编写。
7.2INSERTINTO语句
INSERTINTO表名(字段1,字段2,字段3)
VALUES(值1,值2,值3)
注意要求:
Ø第一行为:
INSERTINTO表(表字段)
Ø第二行为:
VALUES(字段所对应的值)
Ø“,”后请打一个空格
7.3UPDATE语句
UPDATE表名
SET字段1=值1,字段2=值2,字段3=值3
WHERE
条件1
AND(OR)条件2
AND(OR)条件3
注意要求:
Ø第一行:
UPDATE表名
ØSET设置字段值(注:
如果太长,请换行)
Ø“=”两头请都打空格
Ø“,”后请打一个空格
Ø若带条件,单独一行写WHERE
Ø空四个空格符,写上第一个条件
Ø若带多个条件,换行,敲两个空格,写AND条件N
Ø一行只写一个AND条件
7.4SELECT语句
SELECT
字段1,
字段2,
字段3
FROM表1,表2,表3
WHERE
条件1
AND(OR)条件2
AND(OR)条件3
ORDERBY排列字段
GROUPBY分组字段HAVING过滤条件
UNION[ALL]
SELECT……
或者(SQL标准的关联查询写法):
SELECT
字段1,
字段2
字段3
FROM表1
INNER(LEFT、RIGHT、FULL)JOIN表1ON条件
INNER(LEFT、RIGHT、FULL)JOIN表2ON条件
CROSSJION表3(注:
交叉查询是不带ON条件的)
WHERE条件1
AND(OR)条件2
AND(OR)条件3
ORDERBY排列字段
GROUPBY分组字段HAVING过滤条件
UNION[ALL]
SELECT……
注意要求:
请注意以上的两种格式,该换行的请换行、该空格的请空格!
建议采用第二种格式写法(相关的链接查询请正确的理解)
知识提醒:
INNERJOIN表ON条件
同等于oracle中的T1.A=T2.A
LEFTJOIN表1ON条件
同等于oracle中的T1.A=T2.A(+)
RIGHTJOIN表1ON条件
同等于oracle中的(+)T1.A=T2.A
8补充说明异常抛出
8
8.1Service层异常的抛出
Ø公开外部访问的方法(public)
必须:
throwsDBException,ServiceException
方法体必须为如下格式的try{……}catch
try{
//当人为抛出异常时:
thrownewServiceException("自定义抛出异常信息定义!
");
}catch(Exceptione){
thrownewServiceException("serviceerr:
"+e.getMessage());
}
Ø不公开访问的方法(private)
只有在本类被使用,必须设置为private,此时异常抛出:
1、如果跟数据库相关的,则:
必须:
throwsDBException,Exception方法体不需要再try{……}catch。
2、如果跟数据库无关的操作,则:
必须:
throwsException方法体不需要再try{……}catch。
Ø单个数据库操作的方法
查询、新增、编辑、删除的单个操作,一律调用
DataBase.方法(sqlQuery)。
Ø含多个数据库操作的方法
包括(查询、新增、编辑、删除的混合操作)的方法内,一律调用
DataBase.方法(sqlQuery,connection)带connection的方法,并且方法结束后一定关闭数据库连接:
finally{
DataBase.closeConnection(connection);
}
ØService层的方法调用数据库入口说明
调用数据库入口一律以DataBase.方法,不能直接使用这样访问:
AbstractDatabase.方法。
8.2控制层异常的处理
捕获:
DBException,ServiceException,或EJBException
9方法修饰说明
Ø公开外部访问的方法——public
Ø不公开访问的方法——private
ØService层内的方法一律不允许适用static来修饰
原因:
1、static修饰的方法实际上是全局方法,只要是public,在任何地方均能被访问,并且程序一被访问,在内存中已经存在。
2、一般重用性极强方法才使用static修饰,如我们的DataBase类,逻辑性强、调用穿插复杂的方法不需要用static修饰,因为不够灵活。
3、被static修饰的方法和非static修饰的方法的生命周期不一样。
10调用过程说明
Factory(UI层)如果要调用底层的java逻辑方法,一律调用control控制层。
不允许跨越control控制层直接调用service业务层,同样是因为后期的维护我们才这么决定。
我们总体访问过程大致都是这样的:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 编码 规范 JAVASQL