《Chinapay技术部Java编码规范》由会员分享,可在线阅读,更多相关《Chinapay技术部Java编码规范(11页珍藏版)》请在金锄头文库上搜索。
1、1Chinapay 技术部 Java 编码规范(Version: 0.14)2版本变迁记录:版本号 修改人 时间 修改内容 备注V0.10 钱斌 2010-06-28 创建文档初稿V0.11 钱斌 2010-07-07 1. 增加 bug 和性能优化的注释说明2. 禁忌中增加对第三方 api 引入的说明 根据周翔的建议增加V0.12 钱斌 2010-07-07 1. 增加对大括号换行的说明。2. 增加对标识符的 cp 标识的说明 根据周雪松建议增加V0.13 钱斌 2010-07-08 1. 增加对 jar 包的说明。2. 增加配置文件的规范说明V0.14 钱斌 2010-07-08 1. 修
2、改 jar 包的发布说明3目录Chinapay 技术部 Java 编码规范 .11. 概述 .42. 源程序编程规范 .42.1. 命名规范 .42.1.1. 类和接口的命名 .42.1.2. 方法的命名 .52.1.3. 变量的命名 .52.1.3.1. 静态常量的命名 .52.1.3.2. 枚举的命名 .62.1.3.3. 普通变量的命名 .62.1.4. 包的命名 .62.1.5. Jsp 文件及变量的命名 .72.2. 注释及空白规范 .72.2.1. 注释规范 .72.2.2. Java doc 规范 .72.2.3. 空白的规范 .72.2.3.1. 空行的规范 .72.2.3.2
3、. 空格的规范 .82.2.3.3. 缩进的规范 .82.2.3.4. 折行、换行规范 .83. 日志规范 .94. 异常处理的规范 .95 单元测试规范 .96 其他禁忌 .1041. 概述本标准定义了chinapay 技术部 java语言开发的编程格式规范,主要包括命名规范、代码注释、日志、以及常用语句的书写要求和约束等。统一规范的格式有利于代码标准化、提高代码的可读性,从而方便后面维护人员对系统业务流程的理解,便于对系统的进行改造和功能扩展。适用对象包括 java 源程序和 jsp 代码。2. 源程序编程规范2.1. 命名规范所有的标识符的命名力求做到统一、达意和简洁。如下为标识符的总原
4、则,本章节的所有不同类型的标识符都必须首先符合本原则:1) 统一:对于同一个概念,在程序中用同一种表示方法。比如对于金额,如果定义了 amt,则不要再变成其他名称。2) 达意:标识符能准确的表达出它所代表的意义,比如: BaseOperDBDAO,GenBankFileProcess 等。切忌用 tmp,server1,server2 等之类的命名。3) 简洁:在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。4) 骆驼法则:Java 中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。比如: Suppli
5、erName, addNewContract,而不是 supplier_name, add_new_contract5) 命名尽量使用通俗易懂的英文单词,如果不会可以向同事求助,不可使用拼音。6) 对于 chinapay 的业务流程相关的标识符,建议加上 cp 前缀。2.1.1. 类和接口的命名1) 类名首字母必须大写。例如: ThisIsAClassName.java。2) 一定集合的类定义了统一的后缀。如下是常见的类的后缀,如果属于如下集合,请务必按清单中的后缀给类命名。请注意后缀的大小写。a) Action:Struts 的 action 类,例:Commit3015Action。 不同
6、的项目对 action 要求不一样,如果需要权限控制,则通常在类中需要有权限 id,用来过滤 url 的请求权限。 每个 action 必须加 action 后缀,但是 struts-config.xml 中的配置需要去除action。例:类名为 Commit3015Action.java,配置中则为:Commit3015.do。5b) Form:Struts 的 form 类,例:Perform3013Form。 跟 action 一一对应。也可多个 action 公用一个 form。命名通常跟 action配套,如 action 名为 Commit3015Action,则 form 应命名
7、为Commit3015Form。c) Bean:数据库对象,例:CardBinBean。 类名通常跟数据库表一一对应,如表名为 card_bin,则对应的 bean 名称为 CardBinBean。 Bean 必须直接或间接继承自toolkit.bean.RecordBeanImpl.RecordBeanImpl。目前已经实现了一个根据表结构生成 bean 的工具,可用此来生成。d) DAO:数据库操作对象,例:CardBinDAO。 所有的数据库操作必须在 DAO 中进行。后缀统一为 DAO,不可写成Dao。 如果 DAO 为小表,建议用不要每次都访问数据库,可以实现com.chinapay.memory.MemoryFlushInf 接口。需要在控制台可以手动更新内存。e) Servlet:servlet 类,例:LoginServiceServlet 。 Servlet 类必须加此后缀。 理论上,如果采用 struts 框架或者其他 mvc 框架,尽量少用 servlet。f) BO:复杂业务逻辑类。例: UserBO。 对于复杂的业务逻辑,需要独立出 BO 来处理。BO 不可写成 Bo 在时间允许的情况下,BO 必须编写单元测试,并且案例必须覆盖所有分支。g) Process:与 BO 类似,处理复杂业务逻辑。例如: GenBankFileProcess Pr