下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录前言211.11.21.3文档编写目的2文档适用范围2修订历史323开发环境和配置3JAVA 开发规范33.1命名规范3总命名规则3目录命名规范5文件命名规范7Java 属性命名规则8Java 方法命名规则9词根表9子系统/模块规范9子系统命名规范9模块命名规范9特殊模块10WEB 层规范10命名规范10类编程规范10方法编程规范10业务层规范11命名规范11方法命名规范11类编程规范11方法编程规范12POJO 类规范123.1.13.1.23.1.33.1.43.1.53.1.63.23.2.13.2.23.2.33.33.3.13.3.23.3.33.43.4.13.4.23.4.3
2、3.4.43.54实现高效 Java 编程规范的基础规则124.14.24.34.44.54.64.74.84.94.104.114.124.13避免使用 NEW 关键字来创建 String 对象12避免使用不必要的嵌套12避免在同一行不同类型的多个变量13在每一行里写一条语句13不要使用不的 API13为所有序列化的类创建一个serialVerUID13对于 private 常量的定义14避免把方法本地变量和参数定义成和类变量相同的名字14数组名15信息15JDBC 连接15在表示长整常量的时候,用 L 来代替 l16JAVA 注释165JSP/HTML 开发规范175.15.2JSP/HT
3、ML 编码规范17JSP/HTML 注释176JAVASCRIPT 开发规范186.16.26.3Javascript 库规则18命名规范18Javascript 注释201前言本文档是ARCH4 系统开发规范,文档讲述的内容要求所有开发必须遵守。开发还需要查阅ARCH4 系统开发指南,ARCH4 系统开发规范和ARCH4 系统开发指南具有同等效力。参与项目开发的任何开发如果对本文档讲述的内容有疑问,在开发前请询问项目经理,不允许任何开发以任何理由本文档讲述的规范要求。1.1 文档编写目的规范开发,约束开为,明确开发纪律。特别约定:1.用“subsystems”代表“各个子系统”。例如“sub
4、systems 的 Action 类”表述为本章规范中,“各个子系统的 Action 类”。2.本章规范中,用“module”代表“模块”。例如“module 的 POJO 类”表述为“模块的 POJO类”。3.本章规范中所有的英文单词都是严格遵守大小写的。1.2 文档适用范围本文档适用于使用 ARCH4 架构开发系统的项目组成员。下表是本文档对于项目组成员的最低要求程度:项目组成员是否必读要求程度项目经理是 否了解文档结构 明白文档内容 透彻理解系统分析师(业务)是 否了解文档结构 明白文档内容 透彻理解对于项目经理、系统分析师、高级程序员和开发工程师,还需要阅读ARCH4 系统架构设计说明
5、书和ARCH4 系统开发指南。1.3 修订历史2开发环境和配置必须遵守ARCH4 开发环境搭建指南的讲述。3JAVA 开发规范3.1命名规范3.1.1总命名规则3.1.1.1概述总命名规则:环境对象操作环境分为分层与,对象通常为表名(或逻辑表名)和布局名,表名以“维度”来做一个名字概念空间进行命名,布局名以其包含的功能对象进行命名。操作名对应相应的操作。3.1.1.2典型环境名环境名适用文件类型含义修订章节类型日期作者说明全部创建2007-05-16新建文档3.1.2.1修改2007-05-30变更目录组织形式,将 pages 目录移至根目录3修改2007-06-12添加 Java 类命名规则
6、,Java 类属性命名规则等,变更示例包名。3修改2007-06-14添加 Java 方法命名规则。系统分析师(技术)是 否了解文档结构 明白文档内容 透彻理解高级程序员是 否了解文档结构 明白文档内容 透彻理解开发工程师是 否了解文档结构 明白文档内容 透彻理解质量保证工程师是 否了解文档结构 明白文档内容 透彻理解3.1.1.3典型对象名3.1.1.4典型操作名3.1.1.5举例3.1.1.5.1JSP 文件举例 1操作名适用文件类型含义EditJSP编辑ViewJSP显示ListJSP列表deleteJava按对象删除本身findJava查询addJava添加updateJava更新对象
7、名适用对象类型含义Proal逻辑表名投保单Policy逻辑表名保单PrpDuser物理表名员工Claim业务对象User业务对象员工Main表名主表Head布局名头部Middle布局名中部Tail布局名尾部ActionJavaStruts2Action 对象ServiceJavaService 的接口ServipringImplJavaService 的Spring 方式实现3.1.1.5.2JSP 文件举例 23.1.1.5.3Java 文件举例在 Java 文件中,操作不体现在文件名中,而体现在该 Java 类的方法中3.1.2目录命名规范除特别用途外,目录名必须全部为小写。3.1.2.1
8、页面目录命名规则webapp 为应用的目录。3.1.2.1.1举例以新增报案模块功能为例说明如何确定目录名1.确定根目录名pages确定模块目录名模块为报案,对应关键字为regist2.所以报案模块的目录名为 pages/regist目录说明common公共页面pages应用的页面文件目录pages/user应用的 User 模块的页面文件目录scripts公共styles页面样式文件目录styles/images目录WEB-INFWeb 应用系统部分,包括配置文件、库文件、类文件等WEB-INF/classes类文件目录WEB-INF/libJar 文件目录WEB-INF/tlds应用的 t
9、ld 文件目录widgetsWEB 组件目录(所有的外部公共组件都放在这里)widgets/loadingLoading 组件目录widgets/yuiYUI 组件目录3.1.2.2Java 程序目录结构3.1.3文件命名规范除特别用途外,文件名区分大小写,每个单词的首字母大写。3.1.3.1页面文件命名规则环境为:.jsp操作名为:规则为:对象操作环境以对象 User 为例,其文件名称如下所示:3.1.3.2Java 文件命名规则规则为:对象操作环境以对象 User 为例,其文件名称如下所示:文件名含义UserEdit.jsp编辑UserView.jsp显示UserList.jsp列表操作名
10、适用文件类型含义EditJSP编辑ViewJSP显示ListJSP列表包名说明ins.oworld演示系统ins.oworld.user模块根目录ins.oworld.user.m模块对应的 POJO 对象目录ins.oworld.user.service服务目录ins.oworld.user.service.facade服务接口目录ins.oworld.user.servipringSpring 方式的服务实现目录ins.oworld.user.webStruts2 方式的 Action 目录3.1.3.3Java 包命名规则包名中所有字母均为小写。如:inin.userin.defloss
11、3.1.3.4Java 类命名规则按 Java 规则,首字母大写,之后的每个单词的首字母也大写。注意:当表名为 PrpL(或 PrpC、PrpT)时, Prp 作为一个单词,L作为一个单词如表名为 prpduser 时类名为 PrpDuser典型类名如下:3.1.4Java 属性命名规则规则 1:首字母小写,之后的每个单词的首字母也大写。如 policyNo,itemNo规则 2:如果首字母之后的字母按规则 1 应该为大写时,改为小写。如 ID 应该为 id如 ISBN 应该为 isbn如ame 应该为ame注:这是因为 JavaBean 规范中对于 iD 的是按 ID 的方式进行的,如果页面
12、上写 iD 则无法到。为了避免,用规则 2 处理,直接从最底层避免这种问题。对象名(表名)类名prpdusrpDuserprplregistPrpLregistprpldeflossmainPrpLdeflossMainPolicyPolicy包名文件名in.user.mPrpDuser.javain.user.service.facadeUserService.javain.user.servipringUserServipringImpl.javain.user.webUserAction.java3.1.5Java 方法命名规则方法名为 动词名词,如新增报案方法名为 addRegist,
13、更下表为标准的几种方法前缀。案为updateRegist3.1.6词根表在命名的时候,参照部门定义的词根表进行。里面包含词根的英文名、缩写及对应的中文意思。部门词根表的文件名为“FI-WordRoot.xml”。3.2子系统/模块规范3.2.1子系统命名规范规则为 应用名子系统名如保险系统包名为 ins软理赔子系统包名为 in则3.2.2模块命名规范按照业务划分,如理赔包括报案、结案等环节,可以按照环节划分模块。即报案模块、模块、结案模块等。软第二赔子系统报案模块包名为对应的包名为 in.regist赔子系统模块包名为对应的包名为 in.claim软第二每个模块下都有相同的包结构,参“3.1.
14、2.2 Java 程序目录结构”:方法前缀说明示例prepareAdd准备增加prepareAddUsrepareAddRoleadd增加addUser、addRoleprepareUpdate准备更新prepareUpdateUsrepareUpdateRoleupdate更新updateUser、updateRoleprepareFind准备查询prepareFindUsrepareFindRolefind查询findUser、findRoledelete删除deleteUser、deleteRoleview查看viewUser、viewRole3.2.3特殊模块除了对应业务的模块外,还包
15、括接口模块。负责与外部系统的交互,如软第二赔子系统接口模块包名为对应的包名为 in.erf3.3WEB 层规范3.3.1命名规范1.Action 类必须存放在 inbsystems.module.web 包下。2.inbsystems.module.web 包下的类全部都要以“Action”结尾。3.Action 类必须继承ponents.web.Struts2Actionn 类。4.类名为:模块名+后缀,如报案模块的 Web 层 Java 类名为 RegistAction3.3.2类编程规范1.Action 类中仅能定义 protected final Log logger = LogFac
16、tory.getLog(getClass();变量,不允许定义其他变量。2.LogFactory.getLog()方法的入参必须是该Action 类本身的 class 对象。3.在 WEB 层类不允许用“new”关键字创建业务层和持久层类对象。4.在 WEB 层类不允许出现与SQL 语句相关的代码,不允许调用任何类拼写SQL 语句。3.3.3方法编程规范1.调用业务层的 Service 必须通过接口注入。2.在查询和翻页查询的方法中,必须把从业务层Service 返回的结果集存放到 Page 对象中。3.WEB 层的类之间不允许互相调用。4.WEB 层仅可以抛出DataVerifyExcept
17、ion 和 PermisException。包名说明in.erf公共模块根目录in.erf.servlet与外部系统通过Servlet 交互的目录in.erf.webservice与外部系统通过 WebService 方式交互的目录in.erf.与外部系统通过方式交互的目录5.方法名为 动词名词,如新增报案方法名为 addRegist,更案为updateRegist。3.4业务层规范3.4.1命名规范1.inbsystems.module.service 包下不能有文件。2.inbsystems.module.service.facade 包下的接口名必须以 Service 结尾。3.inbs
18、ystems.module.servipring 包下的类名必须以 ServipringImpl 结尾。4.类名为:模块名+后缀,如报案模块的业务层 Java 类的 facade 名为 RegistService,其 Spring 的实现类的名字为 RegistSevipringImpl3.4.2方法命名规范Service 方法命名规范如下:注意:由于和 getter 方法,这里不采用 get 作为业务方法的前缀,而改用 find。3.4.3类编程规范1.所有的ServipringImpl 类必须实现对应的 Service 接口,类和接口的名称仅相差“SpringImpl”。2.Servipr
19、ingImpl 类必须配置在/src/resour/spring/serviceContext.xml 文件中,的 id 属性值必须是首字母小写的 Service 接口名。3.ServipringImpl 类的类变量只能用于定义Service,且只可用 private 修饰,对于这些 Service,只需要在ServipringImpl 类中生成 set 方法。4.ServipringImpl 类的Service的变量名必须与 serviceContext.xml 文件中定义的节点的 id 属性值相同。5.在业务层类中不允许出现拼写SQL 的语句。方法前缀说明示例add增加addUser、ad
20、dRoleupdate更新updateUser、updateRolefind查询、获取等(单条或多条)findUser 、 findRole 、 findUserById 、findUserByUserCodecheck检查delete删除deleteUser、deleteRole3.4.4方法编程规范1.在 ServipringImpl 类中不允许使用“new”关键字创建持久层对象和 WEB 层对象。2.在业务层仅可以抛出 BusinessException。3.5POJO 类规范1.POJO 类由HibernateTools 生成,不允许做任何修改的,也不允许在这个包下新增类。2.POJO
21、 类中的属性区分大小写,在编写 hibernate.reveng.xml 文件时指定将自动生成。3.类名为:对象名。通常按照表名命名,区分大小写。如:表 prplregist 对应的 POJO 类为 PrpLregist4实现高效 Java 编程规范的基础规则4.1 避免使用 NEW 关键字来创建 String 对象把一个String 常量 copy 到String 对象中通常是多余、浪费时间的。Public class testPublic void method()System.out.pr(str);private String str = new String (1); /这里新建对象
22、是完全没有必要的private String str2=”2” /正确的应该如此4.2 避免使用不必要的嵌套过多的嵌套会使你的代码复杂化,减弱可读性。Public class test String add ()c=(a=a+b)+b; /过于复杂Return c4.3 避免在同一行不同类型的多个变量这样可以使程序更加清晰,避免privateindex, index1;正确的应该如此:privateprivateindex;index1;4.4 在每一行里写一条语句这条规则不包括 for 语句:比如:for (i = 0; i 10; i+) x-;可以增加代码的可读性。public clas
23、s OSPL method (a,b) i = a + b; return i; / 可读性不强正确的:public class OSPLFixed method (a,b) i = a + b;return i;4.5 不要使用不的 API尽量使用 JDK1.5的 API。在类和方法或者 java 组件里有很多方法是陈旧的或者是可以选择的。有一些方法SUN 用了deprecated标记。最好不要使用例如:privaist t_list = new List ();t_list.addItem (str);如果查一下 javadoc 的话,会发现建议用 add()来代替 addItem()。4
24、.6 为所有序列化的类创建一个serialVerUID可以避免从你各种不同的类破坏序列的兼容性。如果你不特别制订一个 UID 的话,那么系统为自动产生一个 UID(根据类的内容)。如果 UID 在你新版本的类中改变了,即使那个被序列化的类没改变,你也不能反序列化老的版本了public class DUID implements java.io.Serializable public void method () 在里面加一个 UID,当这个类的序列化形式改变的时候,你也改变这个 UID 就可以了。public class DUIDFixed implements java.io.Seriali
25、zable public void method () private sic final long serialVerUID = 1;4.7 对于 private 常量的定义比较好的做法是对于这样的常量,加上final 标记,这样的常量从初始化到最后结束值都不会改变。privatesize = 5;改变后的做法是:private finalsize = 5;4.8 避免把方法本地变量和参数定义成和类变量相同的名字这样容易引起混扰,建议把任何的变量字都定义成唯一的。public void method (j) finali = 5; / VIOLATIONprivatej = 2;建议:pub
26、lic void method (j1) finali = 5; / VIOLATIONprivatej = 2;4.9 数组名数组应该总是用下面的方式来命名:byte buffer;而不是:byte buffer;4.10信息信息必须在 java 文件的开头,比如:/* Copyright 2000 ShanghaiCo.*.*/其他不需要出现在 javadoc 的信息也可以包含在这里。4.11 JDBC 连接如果有 JDBC 连接没有关掉的话,需要在finally方法中关掉如果数据库连接失败或者是没有连接,看上去无关紧要。但是其他的用户就需要用更长的时间等待连接,这样数据库利用效率就会下降
27、。确保你的代码在任何情况下,包括出错或者程序异常终止的情况下都数据库连接。在finally方法中关掉连接,就可以确保这一点。错误示例:try Sement stmt = con.createSement(); catch(SQLException e) e.prStackTrace();正确示例:try Sement stmt = con.createSement(); finally if (con != null & !con.isClosed() con.close();4.12 在表示长整常量的时候,用 L 来代替 l因为 l 很容易和 1 混一起。错误示例:long temp = 2
28、3434l;正确示例:long temp = 23434L;4.13 JAVA 注释1 Java 中的注释格式:一:/ * /此方法不能嵌套使用 。(多行注释)二:/ /此方法可以嵌套使用。(单行注释)如:/ * / / * / 代表注释内容。三:/*/(java 文档注释)5JSP/HTML 开发规范5.1JSP/HTML 编码规范1.所有 JSP 文件的第一行必须写为:。2.要显示在页面上的中文字必须在资源文件中定义,不允许直接在 JSP 文件中写中文,在 JSP 文件中使用。3.JSP 文件中的中文注释必须写在“”内。4.所有的 HTML(例如、等)都必须是小写字母。5.、必须顶行写,在
29、它之前不允许有空格。其他所有的元素依照嵌套关系依次所进两个空格。6.元素的开始和结束必须成对出现(例如和),且必须在同一列上。7.如果某个元素的属性太多需要换行写,新起行的第一个属性的列数必须在这个元素的开始标签的列数之后。8.JSP/HTML 文件中的 TAB 键必须替换成空格,且依次所进两个空格。9.JSP/HTML 文件每行字符为 120 个包括空格,超过的部分要换行写。10.所有的 JS都写在内。5.2JSP/HTML 注释经常遇到的 JSP 页面注释方式包括以下两种:1 用户可以看到的注释;符号:.用户可以看到指的是用户可以通过浏览器的“查看-源文件”看到注释的内容。(并不是直接显示
30、在页面上)。2 用户看不到的注释符号:或者:。这类注释主要是面向程序员的注释.方便程序员了解和更新程序代码。3 用途: 方便程序员进行 jsp 页面的调试。一般用来进行调试,因为你可以在注释加入EL(表达式),从而到运行页面点击浏览器:查看-源代码查看表达式的结果。用或者不能达到这个目的,因为这个注释下的内容无法在浏览器中查看。例如:testsQuoting test!-这个注释用户可以看到 -%-这个注释用户看不到 -%6JAVASCRIPT 开发规范6.1Javascript 库规则的长期价值直接源于其编码质量。在它的整个生命周期里,一个程序可能会被许多人阅读或修改。如果一个程序可以清晰的展现出它的结构和特征,那就能减少在以后对其进行修改时出错的可能性。编程规范可以帮助程序员们增加程序的健壮性。所有的 JavaScript 代码都是给公众的。所以更应该保证其质量。保持整洁很重要。6.2命名规范1 JavaScript 文件JavaScriptJavaScript程序应独立保存在后缀名为 .js 的文件中。代码不应该被包含在 HTML 文件中,除非这是段特定只属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨国采购合同文本
- 经典招标文件样本
- 联盟经营协议书的签订
- 肉猪饲料交易合同
- 食品供货合同格式模板
- 居间服务合同买方权益保护建议
- 钢筋工劳务分包协议书样本
- 网络技术外包合同模板
- 招标采购文件模板分享
- 石材配件采购合同
- 湖南省名校联考联合体2023-2024学年高一上学期期末考试 生物 含解析
- 2024江苏省常熟市事业单位招聘176人历年高频难、易错点500题模拟试题附带答案详解
- 中药表格完整版本
- 居民健康档案电子建档工作实施方案
- 外研版(2024新版)七年级上册英语期末(Units 1~6)学业质量测试卷(含答案)
- 2024年湖南省长沙市中考数学试题(含解析)
- 供应链与生产制造L1-L4级高阶流程规划框架 相关两份资料
- 厨房里的危险课件
- 海底捞岗位晋升流程
- 牛津译林版(2024新版)七年级上册英语Unit 8 单元测试卷(含答案)
- 贵州大学新型智库建设实施方案
评论
0/150
提交评论