Java编码规范

 

命名规范java

包名:小写,命名有意义c++

类名,接口:首字母大写(caml风格)程序员

方法:首字母小写,后面的各单词首字母大写。使用有意义的单词或单词简写web

属性、变量:同方法名 数据库

常量:所有大写,使用_分割 数组

形参:要与变量名一致 工具

数组:方括号放在变量类型后面 优化

文档注释: 编码

文件注释: 线程

/********************************************************************

* 文件名:Test.java

* 版权:Copyright (C) 2016 XXX. All Rights Reserved.

* 修改人:XXX

* 修改时间:2016-8-22

* 修改内容:添加toString方法

*******************************************************************/

 

类注释:

/**

* 该类是对日志的处理类(功能职责)

* @author

* @since JDK1.8

* @history 2016-8-16 XX 新建

*/

 

方法注释;

/**

* 功能说明

* @param context 应用上下文

* @param bean

* @return DataBean

* @throws Exception 若是在转换过程当中出错,则抛出Exception

*/

 

属性注释:

/** 说明字段的含义 */

 

特殊注释:

//TODO

没有完成但必须完成的地方

//FIXME

用于必须修改bug的地方

 

若是一个方法是对接口的实现,那么详细的方法文档注释应该写在接口类的方法中,实现类方法应该经过 @see 指引过去。

 

代码优化:

1.避免“上帝类”

2.尽可能将一些逻辑实现,尤为是可复用的逻辑实现,分离到不一样的方法中

3.严格的依照JavaBean的统一方式来写属性访问getter、setter方法,不然在java的反射机制实现时,会有问题

4.方法调用的速度比较,从快到慢排列: static < final < instance method < interface method < synchronized。

5.finalize方法尽量避免使用

6.尽量的使用静态变量。若是类中的变量不会随他的实例而变化,就能够定义为静态变量,从而使他全部的实例都共享这个变量

7.不要在代码中进行具体数值硬编码,把它定义为静态常量,而后在代码中引用

8.尽可能使用接口申明属性和变量:

如:List<String> list=new ArrayList<~>();

Map map = new HashMap();

9.在方法中使用局部变量,必定要肯定变量赋值的惟一性。不然,代码将难以维护,造成歧义,并且是隐含bug的温床。

 

代码风格:

每行申明一个变量

int a;

int b;

每一行至多包含一个Statement

argv++; // Correct

argc++; // Correct

argv++; argc--; // AVOID!

 

关于字符串的处理的方式:

1.避免在字符串中使用“+”,尽可能使用StringBuffer 进行链接;

2.在使用equals和equalsIgnoreCase方法判断两个字符串类型操做数是否相等时,若是两个操做数之中有一个为字符串常量,应该将它置于点操做符“.”的左边,将变量放在点操做符的右边。这样作的好处在于,程序员在使用equals和equalsIgnoreCase方法时,能够没必要先判断变量操做数是否为null

Switch:

在任何的状况下,必须在最后写default语句。

关于异常:

1.避免对应用程序的逻辑使用try/catch ,若是能够用if、while等逻辑语句来处理,那么就尽量的不用try/catch语句

2.重用异常,在必需要进行异常的处理时,要尽量的重用已经存在的异常对象。觉得在异常的处理中,生成一个异常对象要消耗掉大部分的时间

关于日志信息的调试:

不要直接的使用System.out或者System.err或者Exception的printStackTrace()方法打印出调试信息或Exception

资源释放:

手动使用的资源要及时释放,好比文件资源、数据库资源等。(虽然这个类可能实现了atupCloseable接口)

 

针对java.util包的使用注意事项:

避免使用java.util包里面的java.util.Vector和java.util.Hashtable,由于这两个类是synchronized的,比不是synchronized的容器类速度会慢不少,当在单线程的状况下请使用java.util.ArrayList(接口是:java.util.List)和java.util.HashMap(接口是java.util.Map)。

 

工具类的命名:

工具描述 + Util

模块专用常量的统一管理命名

模块名 + Constants

 

各层代码分工:

页面:

展现数据

Ø 进行页面数据验证

Ø 不处理与应用程序相关的业务逻辑

Ø 不进行事务管理

Ø 复杂的逻辑,请交给工具类来处理

 

web层:

Ø 管理用户界面层发出的请求,作出相应的响应

Ø 从页面取得相应的用户输入数据

Ø 将数据提供给业务层,委派调用业务逻辑和其它上层处理

Ø 统一处理异常,包括持久层和业务层抛出的异常

Ø 为页面显示提供数据模型

Ø 用户身份和操做权限验证

Ø 不进行事务管理

biz业务层:

Ø 处理应用程序的业务逻辑和业务校验

统一管理事务

不直接与数据库通讯

Ø 不直接与JSP、Session等进行通讯

相关文章
相关标签/搜索