提供一整套编写高效可靠的Java代码的标准,约定和指南。他们以安全可靠的软件工程原则为基础,使代码易于理解,维护和增强。而且,通过遵循这些程序设计标准,你作为一个Java软件开发者的生产效率会有显著提高。经验证明,若从一开始就花时间编写高质量的代码,则在软件开发阶段,对代码的修改要容易很多。最后,遵循一套通用的程序设计标准将带来更大的一致性。
1. 开发工具规范
1.1 统一JDK版本
1.2 统一开发工具,和配置
统一开发工具,eclipse,并使相同的配置,如:format等
windows,Mac 都可以使用 JRebel, 具体查看我的另外一篇博客: http://blog.csdn.net/lsblsb/article/details/15340251
1.2.1 format配置统一
在eclipse -> Preferences -> java -> code style -> fomatter , 创建一个,然后编辑,
Line Wrapping中,maximum line width: 200
1.2.2 新建java类,注释配置:
在eclipse -> Preferences -> java -> code style -> Code Templates -> code: New Java files
修改对应的内容
1.2.3 特殊template配置:
Preferences -> java -> Templates , 新建一个属于自己的tempates
如:新建dao类,需要生成与一般类不同的注释,我是通过java的template来实现,类似输入syso出来System.out.println() 同原理。
1.2.4 代码补全提醒配置
详见链接: http://blog.csdn.net/u010275119/article/details/8956972
等等。。
1.3 统一与代码相关的的插件
插件列表:
1.3.1 findbugs
Findbugs是一个在java程序中查找bug的程序,它查找bug模式的实例,也就是可能出错的代码实例,它是寻找代码缺陷的,很多我们写的不好的地方,可以优化的地方,它都能检查出来。
注意Findbugs是检查java字节码,也就是*.class文件。
访问地址:http://findbugs.cs.umd.edu/eclipse/
插件地址:http://findbugs.cs.umd.edu/eclipse
1.3.2 checkStyle
Checkstyle是一款检查Java程序源代码样式的工具,它可以有效的帮助我们检视代码以便更好的遵循代码编写标准,特别适用于小组开发时彼此间的 样式规范和统一。Checkstyle提供了高可配置性,以便适用于各种代码规范,所以除了使用它提供的几种常见标准之外,你也可以定制自己的标准。 Checkstyle提供了支持大多数常见IDE的插件,大部分插件中就含有最新的Checkstyle,就不用费心再部署一份了。
访问地址:http://eclipse-cs.sourceforge.net/
插件地址:http://eclipse-cs.sourceforge.net/update
2.命名规范
2.1 采用驼峰形式命名
2.2 一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写
2.3 常量大写,单词之间用一个下划线分隔
2.4 使用可以准确说明的英文描述符
2.5 以get打头的方法不能返回boolean值
2.6 获取方法返回值是boolean型的要以”is”,”have”,”can”,”has”打头,提高代码可读性
2.7 用”is”,”have”,”can”,”has”打头的方法必须返回boolean型.
2.8 构架相关组件命名约定
中文名称 | 英文名称 | 备注 |
接口 | IXXX | xxxxxxxxxxxxxxxxxxxx |
工具类 | XXXUtil |
|
Receiver类 | XXXReceiver |
|
LogicHandler类 | XXXHandler |
|
构件类 | XXXExecutor |
|
数据访问类 | XXXDAO |
|
Web动作响应类 | XXXAction |
|
Web动作数据类 | XXXForm |
|
常量定义类 | XXXConstants |
|
辅助类 | XXXHelper |
|
异常类 | XXXException |
|
Servlet | XXXServlet |
|
基础类 | BaseXXX |
|
3.代码布局规范
3.1源代码的布局顺序是:包,import语句,源文件注释,类3.2在一个类中,布局顺序依次是:非私有变量、私有变量、构造器、方法、内部类、main方法
3.3 类中非私有变量的布局顺序是:public、package、protected
3.4构造器有多个时,要依据参数少的在前面,参数多的在后面的原则编写代码,提高代码可读性
3.5类中方法的布局顺序是:public、package、protected、private
3.6函数重载要集中在一起声明,提高代码可读性
3.7一个类的代码行不超过2000行
3.8一个方法的代码行不超过200行
3.9 针对dao类,有更加严格的要求(找个例子)
4.代码书写规范
4.1每行只有一个句子,提高代码可读性
4.2方法之间要有一空行,不同的逻辑块之间也要有空行,在定义类和接口之前要有空行,提高代码可读性。
4.3 import语句必须引用到具体的类
4.4 注释约定
4.4.1源文件(.java文件)头部应进行注释,注释必须列出:版权说明、作者、内容(功能)、生成日期、版本号等
4.4.2类:类的目的(即类所完成的功能),注释出采用的常量。
4.4.3接口:设置接口的目的、它应如何被使用以及如何不被使用。
4.4.4成员函数注释:对于设置与获取成员函数,在成员变量已有说明的情况下,可以不加注释;普通成员函数要求说明完成什么功能,参数含义是什么、返回什么。
4.4.5普通成员函数内部注释:控制结构,代码做了些什么以及为什么这样做,处理顺序等
类文件头注释规范
在每个文件的头部至少必须要有以下注释信息:
序号 | 项目 | 填写说明 | ||
1 | 标题 | 该模块名称 | ||
2 | 描述 | 文件的详细功能描述 | ||
3 | 作者 | 文件创建人姓名 | ||
4 | 版权 | 固定为“U箱” | ||
5 | 创建时间 | 文件创建日期,格式:YYYY-MM-DD | ||
6 | 修改历史记录 | 修改历史记录注释的增加采用正序排列,即文件头上最后的一组是最新的修改记录,具体详细项目如下: | ||
序号 | 项目 | 填写说明 | ||
1 | 维护单 | 维护单号,格式:xxxx | ||
2 | 修改日期 | 修改日期,格式:YYYY-MM-DD | ||
3 | 修改人 | 修改人姓名 | ||
4 | 修改内容 | 修改内容主要描述修改的功能描述和修改的方法名列表 |
注释风格采用JavaDOC风格,标准格式样例如下:
/**
* <p>标题: U箱架构注释样例类</p>
* <p>描述: U箱架构注释样例类</p>
* 描述如何正确使用JAVA代码注释,本样例实现了对于类头部、函数、属性和修改记录进行了详细注释。
* <p>版权: U箱</p>
* <p>创建时间: 2012-1-10</p>
* <p>作者:聂鹏</p>
* <p>修改历史记录:</p>
*====================================================================<br>
* 维护单:xxxxx<br>
* 修改日期:2012-1-9<br>
* 修改人:聂鹏<br>
* 修改内容:<br>
修改DbUtil类的查询时候出现的NULLPointException的BUG,主要修改了方法GetResult。<br>
*/
4.4.6 方法注释 属性 需要以doc的方式编写
类文件头注释规范
5.配置文件规范
5.1 sqlmap文件
5.1.1 标签编写顺序要求:
typeAlias
resultMap
sql
后面的sql语句按照crud的顺序,一般数据库只做逻辑删除
insert
select
update
5.1.2 每条sql语句排行要求
语句:select from where and set update都是单独一行展示,排版清晰
如:
<select id="queryById" resultMap="areaMapping" parameterClass="long">
select
<include refid="area-full-columns" />
from
uxiang_db_area t
where
t.id = #value#
and
t.deleted = 0
</select>
6.页面规范
6.1 velocity
6.1.1 页面上输出变量的时候,需要添加! 如: $!searchDO.name
6.1.2 页面上所有链接地址都需要写完全路径。
如:<a href="$baseModule.setTarget('list').param('catId',$subCatDO.id)">列表</a>
不能写成:
<a href="list.htm?catId=$subCatDO.id ">列表</a>
7.日志使用规范
7.1 log.debug()是放在代码行中间,用来调试时输出使用,永久保留,不用删除
7.2 log.error()是放在 try{}catch(){}中 catch 部分里的用来输出 error 异常信息使用的。
8.扫黄行动
有黄色警告的地方全部消灭
8.1 代码要格式化,部分格式化
8.2 清除所有没有使用的类,和方法,以及import包,除非基于某种原因考虑
8.3 清除没有意义的注释,主要是代码注释,除非基于某种原因考虑
8.4 测试代码删除
8.5 去掉TODO. FIXME 等注释
9.友情提醒 or最佳实践
9.1数据上传处理一些数据的时候,如果可以走异步模式
待完善。。。