java编码规范

目 录
1 前言.......................................................... 5
1.1 目的.........................................................5
1.2 范围.........................................................5
1.3 版权声明.....................................................5
1.4 参考资料.....................................................5
2 代码组成和风格................................................. 6
2.1 文件组织.....................................................6
2.1.1 java 源文件...............................................6
2.1.2 文件注释.................................................6
2.1.3 package 和import .........................................7
2.1.4 class 和interface 声明....................................7
2.2 缩排........................................................10
2.3 行长度......................................................10
2.4 对齐........................................................10
2.5 空格........................................................11
2.5.1 空格行..................................................11
2.5.2 空格....................................................12
3 注释......................................................... 12
3.1 原则........................................................13
3.2 JAVADOC......................................................13
3.3 文件与包注释................................................13
3.4 类/接口注释.................................................14
3.5 方法注释....................................................14
3.6 其他注释....................................................14
4 命名......................................................... 14
4.1 原则........................................................14
4.2 文件、包....................................................15
4.3 类、接口....................................................15
4.4 字段........................................................15
4.4.1 常量....................................................15
4.4.2 变量和参数..............................................16
4.4.3 组件/部件...............................................16
4.4.4 集合....................................................16
4.4.5 其他....................................................16
4.5 方法........................................................16
4.6 异常........................................................17
Java 软件开发规范V1.3
4
2012
5 声明......................................................... 17
5.1 行数目......................................................17
5.2 初始化......................................................17
5.3 布置........................................................17
5.4 类和接口....................................................18
5.5 方法........................................................19
5.6 字段........................................................20
6 语句......................................................... 20
6.1 基本原则....................................................20
6.2 简单语句....................................................21
6.3 RETURN 语句..................................................21
6.4 IF,IF-ELSE,IF ELSE-IF ELSE 语句..................................21
6.5 FOR 语句.....................................................22
6.6 WHILE 语句...................................................23
6.7 DO-WHILE 语句.................................................23
6.8 SWITCH 语句..................................................23
6.9 TRY-CATCH 语句................................................24
7 单元测试...................................................... 24
7.1 基本原则....................................................25
7.2 JUNIT 单元测试...............................................25
8 性能与安全.................................................... 25
8.1 基本原则....................................................25
8.2 循环语句效率................................................25
8.3 减少重复计算................................................26
8.4 STRING/STRINGBUGFFER/STRINGBUILDER ...............................26
8.5 集合........................................................26
8.6 对象........................................................27
8.7 同步........................................................27
8.8 垃圾收集和资源释放..........................................27
9 程序习惯...................................................... 29
9.1 提供实例变量和类变量的权限..................................29
9.2 引用类变量和方法............................................29
9.3 变量赋值....................................................29
9.4 单元测试....................................................29
10 常用缩写表.................................................. 30
11 代码格式化模板.............................................. 29
Java 软件开发规范V1.3
5
2012
1 前言
1.4 参考资料
《Sun Java语言编码规范》(Java Code Conventions)
原文出处:http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
译文出处:http://morningspace.51.net/
Java 软件开发规范V1.3
6
2012
2 代码组成和风格
2.1 文件组织
由许多方法组成的文件须用“空格行”以及“用来辨认每个方法的选择性注
释”分隔。
注意:文件中有效代码行数不能超过2000 行。每个方法有效代码行数不能
超过100 行。
2.1.1 java 源文件
每一个java 源文件都包含了一个单一的public class/interface。
如果private classes/interfaces 和public class 相关,须将两者同public class 源
文件放在一起。Public 须是此文件中的首个class/interface。
Java 源文件有下列顺序:
* 文件注释
* package 和import 声明
* class 和interface 声明
2.1.2 文件注释
所有的源文件都须以多行注释开始,列出版权声明。Package 注释中应包含:
类说明、详细描述、创建人、创建日期、修改人、修改日期、修改原因。Class
注释中应包含:方法说明、参数、返回值(无参数、返回值时可不注释)。
可使用codetemplate 模板。
/ **
*版权说明
*
*/
package
/**
*类说明
*
Java 软件开发规范V1.3
7
2012
*详细描述
*
*创建人(工号、姓名)
*创建日期
*修改人(工号、姓名)
*修改日期
*修改原因
*
*/
public class
/**
*方法说明
*
*参数
*返回值
*/
2.1.3 package 和import 声明
大多数Java 源文件的第一行非注释行都是package 声明。在这之后空一行须
跟着import 描述。例如:
package java.io.*;
import java.io.File;
2.1.4 class 和interface 声明
下列表格描述了一个class/interface 的声明部分,以它应该出
现的顺序排列。
Java 软件开发规范V1.3
8
2012
内容 备注
/ *
*版权声明
*
*/
文件注释
package java.blah;
import java.blah.blahdy.BlahBlah;
package 和import,中间空行。
/**
* 类或接口描述
* 详细描述
*
* 创建人(工号、姓名)
* 创建日期
* 修改人(工号、姓名)
* 修改日期
* 修改原因
*/
package 注释
public class Blah extends SomeClass {
/* classVar1变量注释 */
public static int classVar1;
/**
* 会超过一行长度的类classVar2注释
*
*/
private static Object classVar2;
变量注释
方法注释
Java 软件开发规范V1.3
9
2012
/** instanceVar1注释 */
public Object instanceVar1;
/** instanceVar2注释 */
protected int instanceVar2;
/** instanceVar3注释 */
private Object[] instanceVar3;
/**
* ...Blah构造方法注释 ...
*/
public Blah() {
// ......
}
/**
* ...doSomething方法注释 ...
*/
public void doSomething() {
// ......
}
/**
* ...doSomethingElse方法注释 ...
* @param someParam
*/
public void doSomethingElse(Object
Java 软件开发规范V1.3
10
2012
2.2 缩排
须以四个空格来当一个缩进的单位。Tabs 设定成4 个空格。
须使用tab 键缩进,不允许使用空格缩进。
2.3 行长度
避免行长度超过80 个字符,因很多终端机和工具无法将行长度处理很好。
注意:使用eclipse 自带的Format 方法(快捷键:Ctrl+Shift+F)时,需要配
置“Maximum line width”设置长度为80。
2.4 对齐
关系密切的行须对齐,对齐包括类型、修饰、名称、参数等各部分对齐。
当方法参数过多时(超过3个),应当在每个参数后(逗号后)换行并对齐。
当控制语句或循环语句中的条件比较长时换行(操作符前)、对齐并注释各
条件。
someParam) {
// ......
}
}
如有返回值,应做说明,如果有异
常抛出,应该对异常说明
Java 软件开发规范V1.3
11
2012
建议:导入code 模板,自动对齐格式。
2.5 空格
2.5.1 空格行
空格行可以改善代码可读性。
单行的空格行应在下列情况中使用:
package 声明之后,import 声明之前和之后。
import 声明组之间。(import 的jdk 包和第三方包分组)
类定义和类定义之间。
在方法之间。
在方法中的局部变量和它的第一条语句之间。
在区块注释或行注释之前。
在方法的逻辑相关区块之间来改善可读性。
Java 软件开发规范V1.3
12
2012
2.5.2 空格
空格可在下列情况中使用:
类名称和左大括号之间空格。类的继承列表和实现列表之间逗号后
空格。
左大括号之前空格。
空格不应该用在方法名称和它的左小括号之间。
在方法的变量列表中的逗号后面应该出现一个空格。
后面接着小括号的关键字应该以一个空格分开。例如:
While (true) {

}
除了“ . ” 之外的二元操作符应该用空格和它们的操作数分隔。空
格不应该分隔一元运算符和它的操作数,如++,==等。例如:
a += c + d;
a = (a + b) / (c * d);
while (d++ = s++) {
n++;
}
printf(“size is “ + foo + “\n”);
在 for 语句中的表达式应该以空格分隔。例如:
for (expr1; expr2; expr3)
强制类型转换后面应该接着一个空格。例如:
meMethod((byte) aNum, (Object) x);
meMethod((int) (cp + 5), ((int) (I + 3)) + 1);
3 注释
java 程序有三种注释:区块注释(/* */)、行注释(//)、文档注释(/** */)。
Java 软件开发规范V1.3
13
2012
3.1 原则
注释应该增加代码的清晰度。
注释应该简洁,避免累赘的注释。
注释信息要包括代码的功能。
不要为注释而注释。
除变量定义等较短语句的注释可用行尾注释外,其他注释当避免使用行
尾注释。
凡有生产修改时,要注释修改的原因,修复的办法,修复人及修复时间。
3.2 JavaDoc
对类、方法、变量等的注释需要符合JavaDoc规范,对每个类、方法都应详
细说明其功能、条件、参数等,并使用良好的HTML标记格式化注释,以使生成的
JavaDoc易阅读和理解。
部分注释标签:
@see 生成文档中的“参见xx 的条目”的超链接,后边可以加上:“类名”、“完
整类名”、“完整类名#方法”。可用于:类、方法、变量注释。
@param 参数的说明。可用于:方法注释。
@return 返回值的说明。可用于:方法注释。
@exception 可能抛出异常的说明。可用于:方法注释。
@version 版本信息。可用于:类注释。
@author 作者名。可用于:类注释。
@deprecated 对类或方法的说明该类或方法不建议使用,引起不推荐使用
的警告
@note 表示注解,暴露给源码阅读者的文档
@remark 表示评论,暴露给客户程序员的文档
@since 表示从那个版本起开始有了这个函数
3.3 文件与包注释
在每个文件、包的头部都应包含该文件的功能、作用、作者、版权以及创建、
Java 软件开发规范V1.3
14
2012
修改记录等。注意是/* */注释而不是/** */注释。
3.4 类/接口注释
在类、接口定义之前当对其进行注释,包括类、接口的目的、作用、功能、
继承于何种父类,实现的接口、实现的算法、使用方法、修改历史(版本、修改
时间、修改人、修改内容)等。
3.5 方法注释
依据标准JavaDoc 规范对方法进行注释,以明确该方法功能、作用、各参数
含义以及返回值等。复杂的算法用/* */在方法内注释。
返回值当注释出失败、错误、异常时的返回情况。
异常当注释出什么情况、什么时候、什么条件下会引发什么样的异常
3.6 其他注释
应对重要的变量加以注释,以说明其含义等。
应对不易理解的分支条件表达式加注释。不易理解的循环,应说明出口条件。
过长的方法实现,应将其语句按实现的功能分段加以概括性说明。
对于异常处理当注明正常情况及异常情况或者条件,并说明当异常发生时程
序应如何处理。
4 命名
4.1 原则
规范的命名能使程序更易阅读,从而更易于理解。它们也可以提供一些标识
功能方面的信息,有助于更好的理解代码和应用。
使用可以准确说明变量、字段、类、接口、包等的完整的英文描述符。
例如,采用类似 firstName,listAllUsers 或 CorporateCustomer 这
样的名字,严禁使用汉语拼音及不相关单词命名,虽然Java支持Unicode
命名,但本规范规定对包、类、接口、方法、变量、字段等不得使用汉
字等进行命名。
采用该行业的术语。如果用户称他们的“客户” (clients) 为“顾客”
(customers),那么就采用术语 Customer 来命名这个类,而不用
Java 软件开发规范V1.3
15
2012
Client。
采用大小写混合,提高名字的可读性。一般应该采用小写字母,但是类
和接口的名字的首字母,以及任何中间单词的首字母应该大写。包名全
部小写。
尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等,如
实现(implement)可缩写成impl,经理(manager)可缩写成mgr等,具
体参看附录《常用缩写简表》,严禁滥用缩写。
避免使用长名字(最好不超过 25 个字母)。
4.2 文件、包
文件名称和类名称相同,名称中所有单词首字母大写。
包名一般以项目或模块名命名,少用缩写和长名,一律小写。
包名按如下规则组成:
[基本包名].[项目名].[模块名].[子模块名]...
如:
com.kevin.quasar
com.kevin.skyhome.dao.hibernate
不得将类直接定义在基本包下,所有项目中的类、接口等都当定义在各自的
项目和模块包中。
4.3 类、接口
所有单词首字母大写。名称使用能确切反映该类、接口含义、功能等的词语。
一般采用名词。 接口带I前缀。
4.4 字段
4.4.1 常量
常量名称全部大写,并且在单词之间用“_”分隔。例如:
static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 99;
枚举作为常量,原则上枚举值上线使用后不应该再做修改,枚举值新增和删
Java 软件开发规范V1.3
16
2012
除也需要评估对使用方的影响。
4.4.2 变量和参数
除第一个单词外其余单词首字母大写。
对不易清楚识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使
用strXXX,boolean使用isXXX,hasXXX等等。
4.4.3 组件/部件
应采用完整的英文描述符命名组件(接口部件),遵循匈牙利命名法则。例
如:btnOK,lblName。
4.4.4 集合
一个集合,例如数组,应采用复数命名来表示队列中存放的对象类型。命名
应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写,适当
使用集合缩写前缀。例如:
Vector vProducts = new Vector(); //产品向量
Array aryUsers = new Array(); //用户列表
4.4.5 其他
命名时应使用复数来表示它们代表多值。如:orderItems。
4.5 方法
方法的命名应采用完整的英文描述符,大小写混合使用:从第二个单词起,
单词首字母大写。方法名称的第一个单词常常采用一个有强烈动作色彩的动词。
取值类使用get前缀,设值类使用set前缀,判断类使用is(has)前缀。 例如:
getName()
setSarry()
isLogon()
方法参数建议顺序:(被操作者,操作内容,操作标志,其他⋯) 例如:
public void replace(String strSource, //源字串
String strOld, //被替换字串
String strNew) //替换为字串
17
2012
4.6 异常
异常类名由表示该异常类型的单词和Exception组成,如 ActionException。
异常实例一般使用e、ex等,在多个异常时使用该异常名或简写加E,Ex等组成,
如:
SQLEx、ActionEx。
5 声明
5.1 行数目
建议每一行一个声明,因为它可以支持注释,清晰阅读。例如:
int level; // 级别
int size; // 大小
勿将不同的类型放在同一行,例如:
int foo, fooarray[];
5.2 初始化
在局部变量声明的地方须初始化;当使用到全局变量的时候,须项目负责人
确认。
5.3 布置
声明只须放在区块开始的地方。(区块是被大括号“{”和“}”围起来的代码。)
勿等到它们第一次被使用时才声明变量。
void myMethod() {
int int1 = 0; // 方法区块的起始位置
if (条件) {
int int2=0; // “if”区块的起始位置

}
}
Java 软件开发规范V1.3
18
2012
此规则的例外是for 循环的索引值,Java 可以在for 的描述中声明:
for (int i=0; i<maxLoops; i++) {

}
在不同层级的声明中,变量不要同名。例如,勿在一个内部区块中声明同名
的变量名称:
int count;

myMethod() {
if (条件) {
int count; // 避免

}

}
5.4 类和接口
定义类和接口时,应该遵循下列格式规则:
勿在方法名称和它自变量起始的小括号“(”之间使用空格。
左大括号“{”放在声明描述同一行的末端。
右大括号“}”自己放在一行,对齐到符合它的左大括号语句的位置,除
了空语句的“}”应该紧接着“{”之后出现之外。
class Sample extends Object {
int ivar1;
int ivar2;
Sample(int I, int j) {
Ivar1 = I;
Ivar2 = j;
Java 软件开发规范V1.3
19
2012
}
int emptyMethod() {}

}
方法和类字段声明、方法之间以一行空白行隔开。
5.5 方法
良好的程序设计应尽可能减小类与类之间耦合,所遵循的原则是:尽量限制
方法的可见性。如果方法没必要公有 (public),就定义为保护 (protected);
没必要保护 (protected),就定义为私有 (private)。
方法定义语法规范:
[可见性][('abstract'|'final')] ['synchronized'][返回值类型]
method_name(参数列表)[('throws')][异常列表]{
// 功能模块
}
如:
public List listAllUsers() throws DAOException{
}
若有toString(),equals(),hashCode(),colone()等重载自Object的方法,
应将其放在类的最后。
方法的声明顺序:
构造方法
静态公共方法
静态私有方法
公共方法
受保护方法
私有方法
继承自Object 的方法
Java 软件开发规范V1.3
20
2012
方法参数应体现具体的业务含义,原则上不建议使用map 等集合类。
5.6 字段
字段定义语法规范:
[(‘public’|’private’|’protected’)]
[(‘final’|’volatile’)][‘static’][‘transient’]
data_type field_name [ ‘=’ expression] ‘;’
不得把实例变量或类变量声明为公有,变量由get或set方法访问。
不允许“隐藏”字段,即给局部变量所取的名字,不可与另一个更大范围内定
义的字段的名字相同(或相似)。例如,如果把一个字段叫做 firstName ,就
不要再生成一个局部变量叫做 firstName,或者任何易混肴的名字,如
fistName。
数组声明时当将"[]"跟在类型后,而不是字段名后,如:
Integer[] ai = new Integer (2); //一个整数对象数组,用于...
Integer aj[] = new Integer (3); //不要用这种数组声明方式
一行代码只声明一个变量,仅将一个变量用于一件事。
声明顺序:
常量
类变量
实例变量
公有字段
受保护字段
私有字段
可以将私有变量声明在类或接口的最后。
6 语句
6.1 基本原则
表达式和语句应清晰、简洁,易于阅读和理解,避免使用晦涩难懂的语
句。
Java 软件开发规范V1.3
21
2012
每行至多包含一条执行语句,过长的语句换行。
避免在构造方法中执行大量耗时的初始化工作,应当将初始化工作延迟
到被使用时再初始化。
避免在一个语句中给多个变量赋相同的值。
在声明局部变量的同时初始化。
含有多种运算符的表达式,使用圆括号来避免运算符优先级的问题。
6.2 简单语句
每一行只有一个语句。例如:
argv++; // 正确
argc++; // 正确
argv++; argc--; // 避免
避免使用过渡的多元速算符。例如:
max = a>b?(a:b)>C?true:false // 避免
6.3 return 语句
如果用变量或方法的返回值作为返回值的return 语句不应使用小括号,
如果使用条件运算符的return 语句可使用小括号。
例如:
return;
return myDisk.size();
return (size?size:defaultSize);
6.4 if,if-else,if else-if else 语句
if-else 类的语句如下:
if (条件) {
语句;
}
Java 软件开发规范V1.3
22
2012
if (条件) {
语句;
} else {
语句;
}
if (条件) {
语句;
} else if () {
语句;
} else {
语句;
}
注意:总是在if 语句上使用大括号{}。避免下列有错误倾向的形式:
if (条件) // 避免!这个忽略了大括号{}!
语句;
分支语句有if,switch 两种。if 语句多用于分支较少的情况,switch 语句多用
于分支较多的情况。
6.5 for 语句
for 语句如下:
for(初始化;条件;更新) {
语句;
}
而空的for 语句(所有的工作都在初始化,条件式,和更新的子句中完成的)
应该有下列形式:
for(初始化;条件;更新);
当在初始化或更新子句的for 语句中使用逗号操作符时,应避免超过三个子
句的复杂使用。
Java 软件开发规范V1.3
23
2012
如需要,在for 循环之前(对初始化子句)或是在循环的结尾(对更新子句)
使用分开的语句。
6.6 while 语句
while 语句如下:
while (条件) {
;
}
空的while 语句如下:
while (条件);
6.7 do-while 语句
do-while 语句如下:
do {
语句;
} while(条件);
6.8 switch 语句
switch 语句如下:
switch (条件) {
case ABC:
;
/* 往下穿过 */
case DEF:
;
Break;
case XYZ:
;
break;
default:
Java 软件开发规范V1.3
24
2012
;
break;
}
每次有往下穿过的case 时(不包含break 语句),增加一个注释。每一个switch
语句都应包含default case。
6.9 try-catch 语句
try-catch 语句如下:
try {
语句;
} catch(ExceptionClass e) {
语句;
}
try-catch 语句也可能跟着不管try 区块有没有完全成功都会执行的finally 语
句,如下列所示的形式:
try {
语句;
} catch(ExceptionClass e) {
语句;
} finally {
语句;
}
异常处理原则:
1. 能处理就处理,不处理就抛出;
2. 确定是否需要异常处理。有些地方通过校验返回值就可以处理而不需要异
常处理。异常处理耗系统性能。
7 单元测试
Java 软件开发规范V1.3
25
2012
7.1 基本原则
测试不通过的代码不得提交到svn库或者发布。不得隐瞒、忽略、绕过任
何Bug。
多做测试,测试要完全,须将各种可能情况都测试通过,须将可能的Bug
在开发中捕捉并处理掉。
测试要保证可再测试性。
对关键功能必须测试并通过,对辅助功能及非常简单之功能可不做测试。
测试代码必须和业务代码一一对应。
针对DAO/Constants/DTO的类可不做单元测试。
测试功能覆盖率要求达到100%。
关键功能单元测试用例需经过项目组评审。
关键功能单元测试结束后,要编写单元测试报告。
7.2 JUnit 单元测试
单元测试使用JUnit。
8 性能与安全
8.1 基本原则
性能的提升并不是一蹴而就的,而是由良好的编程积累的,虽然任何良好的
习惯和经验所提升的性能都十分有限,甚至微乎其微,但良好的系统性能却是由
这些习惯等积累而成。
8.2 循环语句效率
Java循环语句中,for语句使用频率最高,while语句其次,do语句很少用,
可根据自己熟悉程度选用,但应当考虑效率问题。在循环次数不太多时,三种语
句循环效率无明显差别;当循环次数较大时,效率最高的是do循坏,其次是for
循坏,最后是while循坏。
多重循环效率问题
在多重循环中,如果有可能,应将最长的循环放在最内层,最短的循环
Java 软件开发规范V1.3
26
2012
放在最外层。
循环内逻辑判断问题
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循
环体外面。
注意:如无必要,不应在for 循环体内修改循环变量,防止for 循环失去控
制。
8.3 减少重复计算
如果一个代价昂贵的计算或查询多次出现,那么就只在一个地方实现,并记
录结果。这样会避免无谓的重复计算与查询工作。
8.4 String/StringBugffer/StringBuilder
不要使用如下String初始化方法:
String str = new String(“abcdef”);
这将产生两个对象,应当直接赋值:
String str = “abcdef”;
在处理可变 String 的时候要使用 StringBuffer类。构造字符串的时候,
应用 StringBuffer 来实现大部分的工作,当工作完成后将 StringBuffer 对象
再转换为需要的 String 对象。例如:如果有一个字符串必须不断地在其后添加
许多字符来完成构造,那么应使用 StringBuffer 对象和他的 append() 方法。
如果用 String 对象代替 StringBuffer 对象的话,将会花费许多不必要的创建
和释放对象的 CPU 时间。 StringBuffer是线程安全的。
在1.5及以上的JDK版本中可以选中使用StringBuilder类,其效率比
StringBuffer更高,但是线程是不安全的。
8.5 集合
避免使用Vector和HashTable等旧的集合,这些集合的存在仅是为了与旧的
系统兼容,而且由于这些实现是同步的,所以在大量操作时会带来不必要的性能
损失。在新的系统设计中不应该出现这些集合,使用ArrayList代替Vector,使
用HashMap代替HashTable。
Java 软件开发规范V1.3
27
2012
如果确实需要使用同步集合类,使用如下方式获得同步集合实例:
Map map = Collections.synchronizedMap(new HashMap());
由于数组、ArrayList与Vector之间的性能差异巨大,所以能使用数组时不
要使用ArrayList,尽量避免使用Vector。
在使用集合类时,变量的定义以及参数的接收应当使用接口,而非具体实现
类。
8.6 对象
避免在循环中频繁构建和释放对象。
不再使用的对象应及时销毁。
如无必要,不要序列化对象。
对于频繁使用的对象,可将其缓存起来,下次使用时直接从缓存中获取对象。
8.7 同步
在不需要同步操作时避免使用同步操作类,如能使用ArrayList时不要使用
Vector。
尽量少用同步方法,避免使用太多的 synchronized 关键字。
尽量将同步最小化,即将同步作用到最需要的地方,避免大块的同步块或方
法等。
8.8 垃圾收集和资源释放
不要过分依赖JVM的垃圾收集机制,因为无法预测JVM在什么时候运行GC。 尽
可能早的释放资源,不再使用的资源请立即释放。
可能有异常的操作时必须在try的finally块中释放资源,如数据库连接、IO
操作等:
Connection conn = null;
try{
//do something
} catch(Exception e) { //异常捕捉和处理
e.printStackTrack();
Java 软件开发规范V1.3
28
2012
}finally{
//判断conn等是否为null
if(null != conn){
conn.close();
}
}//end try...catch...finally
释放临时变量值操作,对已经不用的变量值设置为NULL利于虚拟机回收:
List tempList=null;
List returnList=null;
//do something
tempList=queryList();
//do something
tempList=null;
return returnList;
关闭连接操作,每个关闭连接要有自己异常处理,不要共用try{}catch内处
理:
Connection conn = null;
ResultSet rs = null;
try{
//do something
} catch(Exception e) { //异常捕捉和处理
e.printStackTrack();
}finally{
if(rs!=null){
Java 软件开发规范V1.3
29
2012
try{
rs.close();
}catch(SQLException e){
//do something
}
if(null != conn){
try{
conn.close();
}catch(SQLException e){
//do something
}
}
}//end try...catch...finally
9 程序习惯
9.1 提供实例变量和类变量的权限
若无特殊原因,不要让任何的实例变量和类变量是public 的。通常,实例变
量不需要被直接的设定或是获得,须用方法获得。
9.2 引用类变量和方法
避免使用对象来调用类变量和方法。使用类名称来调用。
9.3 变量赋值
避免在单个语句中指定好几个变量为同一个值。例如:
fChar = lChar = ‘C’; // 避免
不要使用容易产生歧义的语句。例如:
I++ = j++;
9.4 单元测试
每写一个业务类,同时写一个测试类,完成单元测试后,再开发其他业务类。
Java 软件开发规范V1.3
30
2012
10 常用缩写表
中文名称 英文名称 英文缩写
应用程序 application app
上下文信息 context ctx
管理者,经理 manager mgr
连接(数据库连接) connection conn
系统 system sys
11 代码格式化模板
在开发工具eclipse 导入 代码格式化模板code-spec.xml
12 codetemplate模板
在开发工具eclipse 中导入codetemplate 模板 codetemplate.xml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于LSTM的财务因子预测选股模型LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值