- 浏览: 324710 次
- 性别:
- 来自: 西宁
文章分类
- 全部博客 (120)
- Java Thought (29)
- Java Pattern (4)
- Data Base (7)
- Algorithm Design (33)
- Linux (0)
- Mysql (2)
- Oracle (0)
- ConstructionDesign-架构 (5)
- Spring Platform (0)
- Tomcat (1)
- JavaScript (7)
- Web System (3)
- MS SQLServer (1)
- 软件哲学 (6)
- View (3)
- Java GUI (4)
- CSSDIV (7)
- CloudComputing (0)
- WebService (0)
- SystemOrProject (2)
- SOA (0)
- 互转共享 (3)
- 偶尔java习题 (0)
- Thinks with does (1)
最新评论
-
sassds:
佩服啊 高手
分享一款js特效 -
bhjackson:
学习啦,能否详细介绍下回溯的过程?O(∩_∩)O谢谢
分享回溯法- 找n个数中r个数的组合 -
zk7019311:
了解了解。。。。。
业务层代码复用的一点建议 -
lijie1819:
看到LZ的设计思想,感觉和抽象工厂模式有点相像。
业务层代码复用的一点建议 -
wjjcml1982:
酷毙了!楼主太强悍了!
分享一款js特效
一、 Java命名的一般性指导
1. 类名首字母应该大写。属性(成员变量)、方法、对象变量以及所有标识符(如形式参
数、实际参数、局部变量)的首字母应小写,其中包含的所有单词都应紧靠在一起,而
且大写中间单词的首字母。
例如:类名:ThisIsAClassName 属性或方法名:thisIsMethodOrFieldName
对象变量:thisIsAClassVariable
2. Java 包(Package)属于一种特殊情况,它们全都是小写字母,即便中间的单词亦是如
此。对于全局包,将你的 Internet 域名反转并接上包名,
例如:cn.edu.usst.dingyuewei.package
另外,package 行要在 import 行之前,import 中标准的包名要在本地的包名之
前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应
该用 * 来处理。例如
package hotlava.net.stats;
import java.io.*;
import java.util.Observable;
import hotlava.util.Application;
这里 java.io.* 是用来代替InputStream and OutputStream 的。
3. 接口(Interface):采用完整的英文描述符说明接口封装,所有单词的第一个字母大
写。习惯上,名字后面加上后缀 able, ible 或者 er。
例如:Contactable,Prompter。
4. 组件(Component)使用完整的英文描述来说明组件的用途,末端应接上组件类型。
例如:okButton,customerList,fileMenu。
5. 类中常用方法的命名:
l 类的获取方法(一般具有返回值)一般要求被方法名使用被访问字段名,前面加上
前缀get,如getFirstName(), getLastName()。
l 类的布尔型的判断方法一般要求方法名使用单词 is 做前缀,如isPersistent(),
isString()。或者使用具有逻辑意义的单词,例如equal 或equals
l 类的设置方法(一般返回类型为void):被访问字段名的前面加上前缀 set,如
setFirstName(),setLastName(),setWarpSpeed()。
l 类的普通方法一般采用完整的英文描述说明成员方法功能,第一个单词尽可能采用
一个生动的动词,第一个字母小写,如 openFile(), addAccount()。
l 构造方法应该用递增的方式写(比如:参数多的写在后面)。
例如:
public CounterSet(){}
public CounterSet(int size){ this.size = size;}
l toString 方法:一般情况下,每一个类都应该定义 toString 方法,其格式为 :
public String toString() {…}
l 一般应考虑置入一个main()方法,其中包含用于测试那个类的代码,如果包含了
main() 方法, 那么它应该写在类的底部。
6. 静态常量字段(static final)一般全部采用大写字母,单词之间用下划线分隔(也有
特例,如Java 类库中关于颜色的常数没有严格地全部使用大写字母)。如MIN_BALANCE,DEFAULT_DATE。
7. 循环计数变量通常采用字母 i,j,k 或者 counter。而数组应该总是用下面的方式来
命名:objectType[]或 byte[] buffer。
二、 Java注释约定
1. 类的整体注释:遵循JavaDoc的规范,在每一个源文件的开头注明该CLASS的作用, 作
简要说明, 并写上源文件的作者, 编写日期。如果是修改别人编写的源文件,要在修改
信息上注明修改者和修改日期。
例如:
/**
* @(#):CLASSNAME.java
* @description: Description of this java
* @author: PROGRAMMER'S NAME YYYY/MM/DD
* @version: Version No.
* @modify:
* @Copyright: 版权由 拥有
*/
2. 类中方法的注释:遵循JavaDoc的规范,在每个方法的前部用块注释的方法描述此方法
的作用,以及传入,传出参数的类型和作用,以及需要捕获的错误。
例如:
/**
* 方法的描述
*
*
*@param 参数的描述
*@return 返回类型的描述
*@exception 出错信息的描述
*/
3. 行注释:使用 //…的注释方法来注释需要表明的内容。并且把注释的内容放在需要注
释的代码的前面一行或同一行。
4. 块注释:使用/**和*/注释的方法来注释需要表明的内容。并且把注释的内容放在需要
注释的代码的前面。
5. 注释哪些部分:类的目的(即类所完成的功能)、设置接口的目的以及应如何被使用、
成员方法注释(对于设置与获取成员方法,在成员变量已有说明的情况下,可以不加注
释;普通成员方法要求说明完成什么功能,参数含义是什么?返回什么?)、普通成员
方法内部注释(控制结构、代码做了些什么以及为什么这样做,处理顺序等)、实参和
形参的含义以及其他任何约束或前提条件、字段或属性描述。而对于局部变量,如无特
别意义的情况下不加注释。
三、 Javabean开发规范
1. 数据库连接规范
l 在开发过程中,数据库连接通过调用已写好的一个数据库连接类JDBC 来实现。
l 数据库的连接一般放在数据库的构造方法中建立。
l 在每个方法中,若对数据库操作结束,则必须显式地调用JDBC类里的方法close(),将数据库连接关闭。
2. 代码书写规范(一般Java 程序代码可参考)
有一个良好的代码书写习惯。代码编写规范的基本约定如下:
l 每一行的代码不宜过长,一般以页面宽度的80%至90%为宜。对于连接在一起,代
码较长的程序,可考虑采用分行显示的方式,第二行一般在第一行的基础上缩进两
个空格(或一个TAB,这一点在书写复杂的sql 语句时,尤其要注意!)。
例如:
public Vector getAgentInfo(String agent_name, String agent_type)
throws Exception,SQLException
l javabean 中各个方法之间,一般以两行间隔,而不允许连在一起。
例如:
public void getAgent()
{}
//第一行;
//第二行;
public int getNum()
{}
l 大括号{}使用的规定:{}在使用时,如果不是在一行代码中,则应该做到:左括号
“{”与右括号“}”上下对齐,这一点在有多个嵌套的情况下显得尤为重要。大括
号里的首行代码,必须在下一行,并且缩进两个空格(或一个TAB)。
例如:
public void processRequest(HttpServletRequest clientRequest){
String itemName, itemNum;
int newItemNum;
if(submit==null){
clear();
}else{
update();
try{
newItemNum = (Integer.valueOf(itemNum)).intValue();
}catch(Num berFormatException e){
itemNumber = 1;
}
}
}
l 定义变量时,同一类型的变量可以一起定义,但数量一般限定在两到三个,三个以
上则必须分开定义。变量定义与流程语句之间必须向间隔一行。
3. 例外控制规范
在编写javabean 时,例外(exception)的控制一般有两种方式:
l 一种是在方法里捕获
l 另一种是通过try{}catch(Exception e){}的方式来捕获。
两种方法无论采用哪种均可以,但他们在使用场合还是有一些区别的。
第一种捕获方法,主要适用于对具体是哪种例外、并且在哪里会发生不太清楚的情况。
第二种捕获方法,适用于比较了解例外的发生情况。
4. 方法返回类型规范
这里所指的方法返回类型,专指返回记录集的情况。一般在javabean 里返回的记录集
都是以ResultSet 的类型返回的,考虑到ResultSet 在用完以后需要关闭,如果向页面返回
ResultSet 类型,则须在页面里关闭rs,这样会带来安全方面的隐患。为了解决这个问题,
我们提供了一个方法,将ResultSet类型转换为一个Vector 类型。程序员在javabean里只需
调用相应的方法,即可实现转换。
四、 Java编码其它约定
1. JSP文件命名采用完整的英文描述说明JSP所完成的功能,尽可能包括一个生动的动词,
第一个字母小写,如:viewMessage.jsp、editUser.jsp 或者forumChooser.jsp 等。
2. Servlet 类命名一般对应于所服务的对象加后缀Service 来命名,如:UserService,
TradeService 等。
3. 使用 StringBuffer 对象:在处理 String 的时候要尽量使用 StringBuffer 类,
StringBuffer 类是构成 String 类的基础。String 类将 StringBuffer 类封装了起
来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当我们在构造字符
串的时候,我们应该用 StringBuffer 来实现大部分的工作,当工作完成后将
StringBuffer 对象再转换为需要的 String 对象。比如:如果有一个字符串必须不断
地在其后添加许多字符来完成构造,那么我们应该使用 StringBuffer 对象和它的
append() 方法。如果我们用 String 对象代替 StringBuffer 对象的话,会花费许多
不必要的创建和释放对象的 CPU 时间。
4. 避免太多的使用 synchronized 关键字:避免不必要的使用关键字 synchronized,应
该在必要的时候再使用它,这是一个避免死锁的好方法。 必须使用时,也尽量控制范
围,最好在块级控制。
5. 避免使用 java.util.Vector 类:因为Vector 是 is synchronized.",所以使用
java.util.Vector 类在性能上会有所减低。
6. 尽量使用接口而不是一个具体的类:
例如:给定一个SQL 语句,返回一个对象的列表,实现中用java.util.ArrayList 实现,
于是定义方法为:
public java.util.ArrayList getObjectItems(String sql);
上面的方法存在一个问题,当getObjectItems内改用Vector 或LinkedList实现,外
部类必须做相应更改。一个更好的方法是定义返回值为java.util.AbstractList更合适:
public java.util.AbstractList getObjectItems(String sql);
这样即使更改实现,外部类也不必做相应更改。
7. 避免使用索引来调用数据库中间层组件返回的结果集:
例如:
for(int i=1;i<=dt.getRowCount();i++){
String field1 = dt.getField(i,0).toString();
…
}
而应用字段名来存取结果集:
for(int i=1;i<=dt.getRowCount();i++){
String field1 = dt.getField(i,"field1").toString();
…
}
这样在数据库设计更改或查询的SQL 语句发生变化时,不会影响到程序的执行。另外尽
量不要使用*通配符,例如Select * from tableName,应该具体写明字段名。
1. 类名首字母应该大写。属性(成员变量)、方法、对象变量以及所有标识符(如形式参
数、实际参数、局部变量)的首字母应小写,其中包含的所有单词都应紧靠在一起,而
且大写中间单词的首字母。
例如:类名:ThisIsAClassName 属性或方法名:thisIsMethodOrFieldName
对象变量:thisIsAClassVariable
2. Java 包(Package)属于一种特殊情况,它们全都是小写字母,即便中间的单词亦是如
此。对于全局包,将你的 Internet 域名反转并接上包名,
例如:cn.edu.usst.dingyuewei.package
另外,package 行要在 import 行之前,import 中标准的包名要在本地的包名之
前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应
该用 * 来处理。例如
package hotlava.net.stats;
import java.io.*;
import java.util.Observable;
import hotlava.util.Application;
这里 java.io.* 是用来代替InputStream and OutputStream 的。
3. 接口(Interface):采用完整的英文描述符说明接口封装,所有单词的第一个字母大
写。习惯上,名字后面加上后缀 able, ible 或者 er。
例如:Contactable,Prompter。
4. 组件(Component)使用完整的英文描述来说明组件的用途,末端应接上组件类型。
例如:okButton,customerList,fileMenu。
5. 类中常用方法的命名:
l 类的获取方法(一般具有返回值)一般要求被方法名使用被访问字段名,前面加上
前缀get,如getFirstName(), getLastName()。
l 类的布尔型的判断方法一般要求方法名使用单词 is 做前缀,如isPersistent(),
isString()。或者使用具有逻辑意义的单词,例如equal 或equals
l 类的设置方法(一般返回类型为void):被访问字段名的前面加上前缀 set,如
setFirstName(),setLastName(),setWarpSpeed()。
l 类的普通方法一般采用完整的英文描述说明成员方法功能,第一个单词尽可能采用
一个生动的动词,第一个字母小写,如 openFile(), addAccount()。
l 构造方法应该用递增的方式写(比如:参数多的写在后面)。
例如:
public CounterSet(){}
public CounterSet(int size){ this.size = size;}
l toString 方法:一般情况下,每一个类都应该定义 toString 方法,其格式为 :
public String toString() {…}
l 一般应考虑置入一个main()方法,其中包含用于测试那个类的代码,如果包含了
main() 方法, 那么它应该写在类的底部。
6. 静态常量字段(static final)一般全部采用大写字母,单词之间用下划线分隔(也有
特例,如Java 类库中关于颜色的常数没有严格地全部使用大写字母)。如MIN_BALANCE,DEFAULT_DATE。
7. 循环计数变量通常采用字母 i,j,k 或者 counter。而数组应该总是用下面的方式来
命名:objectType[]或 byte[] buffer。
二、 Java注释约定
1. 类的整体注释:遵循JavaDoc的规范,在每一个源文件的开头注明该CLASS的作用, 作
简要说明, 并写上源文件的作者, 编写日期。如果是修改别人编写的源文件,要在修改
信息上注明修改者和修改日期。
例如:
/**
* @(#):CLASSNAME.java
* @description: Description of this java
* @author: PROGRAMMER'S NAME YYYY/MM/DD
* @version: Version No.
* @modify:
* @Copyright: 版权由 拥有
*/
2. 类中方法的注释:遵循JavaDoc的规范,在每个方法的前部用块注释的方法描述此方法
的作用,以及传入,传出参数的类型和作用,以及需要捕获的错误。
例如:
/**
* 方法的描述
*
*
*@param 参数的描述
*@return 返回类型的描述
*@exception 出错信息的描述
*/
3. 行注释:使用 //…的注释方法来注释需要表明的内容。并且把注释的内容放在需要注
释的代码的前面一行或同一行。
4. 块注释:使用/**和*/注释的方法来注释需要表明的内容。并且把注释的内容放在需要
注释的代码的前面。
5. 注释哪些部分:类的目的(即类所完成的功能)、设置接口的目的以及应如何被使用、
成员方法注释(对于设置与获取成员方法,在成员变量已有说明的情况下,可以不加注
释;普通成员方法要求说明完成什么功能,参数含义是什么?返回什么?)、普通成员
方法内部注释(控制结构、代码做了些什么以及为什么这样做,处理顺序等)、实参和
形参的含义以及其他任何约束或前提条件、字段或属性描述。而对于局部变量,如无特
别意义的情况下不加注释。
三、 Javabean开发规范
1. 数据库连接规范
l 在开发过程中,数据库连接通过调用已写好的一个数据库连接类JDBC 来实现。
l 数据库的连接一般放在数据库的构造方法中建立。
l 在每个方法中,若对数据库操作结束,则必须显式地调用JDBC类里的方法close(),将数据库连接关闭。
2. 代码书写规范(一般Java 程序代码可参考)
有一个良好的代码书写习惯。代码编写规范的基本约定如下:
l 每一行的代码不宜过长,一般以页面宽度的80%至90%为宜。对于连接在一起,代
码较长的程序,可考虑采用分行显示的方式,第二行一般在第一行的基础上缩进两
个空格(或一个TAB,这一点在书写复杂的sql 语句时,尤其要注意!)。
例如:
public Vector getAgentInfo(String agent_name, String agent_type)
throws Exception,SQLException
l javabean 中各个方法之间,一般以两行间隔,而不允许连在一起。
例如:
public void getAgent()
{}
//第一行;
//第二行;
public int getNum()
{}
l 大括号{}使用的规定:{}在使用时,如果不是在一行代码中,则应该做到:左括号
“{”与右括号“}”上下对齐,这一点在有多个嵌套的情况下显得尤为重要。大括
号里的首行代码,必须在下一行,并且缩进两个空格(或一个TAB)。
例如:
public void processRequest(HttpServletRequest clientRequest){
String itemName, itemNum;
int newItemNum;
if(submit==null){
clear();
}else{
update();
try{
newItemNum = (Integer.valueOf(itemNum)).intValue();
}catch(Num berFormatException e){
itemNumber = 1;
}
}
}
l 定义变量时,同一类型的变量可以一起定义,但数量一般限定在两到三个,三个以
上则必须分开定义。变量定义与流程语句之间必须向间隔一行。
3. 例外控制规范
在编写javabean 时,例外(exception)的控制一般有两种方式:
l 一种是在方法里捕获
l 另一种是通过try{}catch(Exception e){}的方式来捕获。
两种方法无论采用哪种均可以,但他们在使用场合还是有一些区别的。
第一种捕获方法,主要适用于对具体是哪种例外、并且在哪里会发生不太清楚的情况。
第二种捕获方法,适用于比较了解例外的发生情况。
4. 方法返回类型规范
这里所指的方法返回类型,专指返回记录集的情况。一般在javabean 里返回的记录集
都是以ResultSet 的类型返回的,考虑到ResultSet 在用完以后需要关闭,如果向页面返回
ResultSet 类型,则须在页面里关闭rs,这样会带来安全方面的隐患。为了解决这个问题,
我们提供了一个方法,将ResultSet类型转换为一个Vector 类型。程序员在javabean里只需
调用相应的方法,即可实现转换。
四、 Java编码其它约定
1. JSP文件命名采用完整的英文描述说明JSP所完成的功能,尽可能包括一个生动的动词,
第一个字母小写,如:viewMessage.jsp、editUser.jsp 或者forumChooser.jsp 等。
2. Servlet 类命名一般对应于所服务的对象加后缀Service 来命名,如:UserService,
TradeService 等。
3. 使用 StringBuffer 对象:在处理 String 的时候要尽量使用 StringBuffer 类,
StringBuffer 类是构成 String 类的基础。String 类将 StringBuffer 类封装了起
来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当我们在构造字符
串的时候,我们应该用 StringBuffer 来实现大部分的工作,当工作完成后将
StringBuffer 对象再转换为需要的 String 对象。比如:如果有一个字符串必须不断
地在其后添加许多字符来完成构造,那么我们应该使用 StringBuffer 对象和它的
append() 方法。如果我们用 String 对象代替 StringBuffer 对象的话,会花费许多
不必要的创建和释放对象的 CPU 时间。
4. 避免太多的使用 synchronized 关键字:避免不必要的使用关键字 synchronized,应
该在必要的时候再使用它,这是一个避免死锁的好方法。 必须使用时,也尽量控制范
围,最好在块级控制。
5. 避免使用 java.util.Vector 类:因为Vector 是 is synchronized.",所以使用
java.util.Vector 类在性能上会有所减低。
6. 尽量使用接口而不是一个具体的类:
例如:给定一个SQL 语句,返回一个对象的列表,实现中用java.util.ArrayList 实现,
于是定义方法为:
public java.util.ArrayList getObjectItems(String sql);
上面的方法存在一个问题,当getObjectItems内改用Vector 或LinkedList实现,外
部类必须做相应更改。一个更好的方法是定义返回值为java.util.AbstractList更合适:
public java.util.AbstractList getObjectItems(String sql);
这样即使更改实现,外部类也不必做相应更改。
7. 避免使用索引来调用数据库中间层组件返回的结果集:
例如:
for(int i=1;i<=dt.getRowCount();i++){
String field1 = dt.getField(i,0).toString();
…
}
而应用字段名来存取结果集:
for(int i=1;i<=dt.getRowCount();i++){
String field1 = dt.getField(i,"field1").toString();
…
}
这样在数据库设计更改或查询的SQL 语句发生变化时,不会影响到程序的执行。另外尽
量不要使用*通配符,例如Select * from tableName,应该具体写明字段名。
发表评论
-
Java常用集合包适用场景
2010-10-25 08:52 42701. ArrayList 基于数组方式实现,无容量的限制 ... -
同一任务和对象锁的问题
2010-08-04 08:31 2545偶尔翻开java编程思想看看多线程的篇章,意焦突然卡在某 ... -
类的装载、连接与初始化 -- 纠正
2010-07-02 09:03 10191.首先纠正<<深入java虚拟机>> ... -
Java虚拟机生命周期和体系结构
2010-06-23 13:48 65291. Java虚拟机的生命周期 ... -
Java体系结构中的四个核心技术思想
2010-06-22 14:27 2115看着瓜娃瓜娃,最近突然很有兴趣想了解下Java这杯&q ... -
Java中的垃圾回收与对象生命周期
2010-06-21 08:23 3062在<<Java编程思想>>书中 ... -
通过系统缓冲字节流类提高IO操作效率
2010-06-01 08:35 1144/** * 通过系统缓冲字节流类提高IO操作效率 ... -
通过系统缓冲字符流类提高IO操作效率
2010-06-01 08:34 1325/** * 通过系统缓冲字符流类提高IO操作效率 ... -
通过自定义缓冲区提高IO操作效率
2010-06-01 08:33 1094/****************************** ... -
java多态性总结二
2010-05-31 11:49 1023多态性:发送消息给某个对象,让该对象自行决定响应何种行为。 ... -
数值包装类 - 性能优化
2010-05-31 08:36 10151. 良好的风格 Double d = new Dou ... -
字符串toCharArray - 性能优化
2010-05-31 08:35 17561. 良好的风格: String s = "a ... -
字符串的length - 性能优化
2010-05-31 08:34 1283尽量提前计算length: (1) 好的风格: Str ... -
字符串累加 - 性能优化
2010-05-31 08:33 12561. 测试代码: package boke.string; ... -
用Java线程协作模拟 - Alice,Bob和Robert博士的协作
2010-05-31 08:26 12181. 问题描述: Robert博士要进行一场实验,她需 ... -
用Java线程池技术模拟 - 容器中的最大值输出及排序输出
2010-05-31 08:23 13041. 输出结果: 排序前的数组: 容器0: 6 15 82 ... -
Java的多态性总结
2010-05-26 10:27 13281. Java的多态性总结: (1) 首先, 要明确Chil ... -
从这个例子你可以想到JAVA多态的什么特性?
2010-05-24 09:03 2968不加一句注解,请看下面内容:你会想到JAVA多态的什么特性? ... -
this是个很巧妙地东西
2010-05-24 09:01 944递归引起堆栈异常。。。 package com.maozj.j ... -
JAVA内存管理的一些经验.
2010-05-24 08:59 9541. 尽早释放无用对象的引用。 A a = new A( ...
相关推荐
阿里巴巴java编码规范 ,Java 并发编程培训(阿里巴巴) 《阿里巴巴Java开发手册》,首次公开阿里官方Java代码规范标准。这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大...
华为JAVA编码规范.pdf 华为JAVA编码规范.pdf是华为公司编写的JAVA编程语言编码规范,旨在提供一个统一的编程风格和代码组织方式,以提高代码的可读性、维护性和可重用性。该规范涵盖了编程语言的基本结构、命名规则...
Java 编码规范 Java 编码规范是指在 Java 语言中编写代码时需要遵守的一些约定和规则,以确保代码的可读性、可维护性和可扩展性。本文将对 Java 编码规范的主要内容进行详细讲解。 命名风格是 Java 编码规范的重要...
腾讯 Java 编码规范 腾讯 Java 编码规范是腾讯集团管理标准的一部分,旨在确保公司项目代码的易维护性和编码安全性。该规范涵盖了 Java 编码风格、文件组织、代码风格、注释、命名、声明、异常、习惯等方面。 一、...
"java编码规范考试题答案" 一、Java编码规范考试题答案 本文档涵盖了Java编码规范的各种方面,包括集合类、线程、对称密码算法、异常处理、命名规范、随机数生成、压缩文件解压、安全编程规范、操作系统登录用户名...