文档库 最新最全的文档下载
当前位置:文档库 › JAVA技术架构及开发规范文档

JAVA技术架构及开发规范文档

JAVA技术架构及开发规范文档
JAVA技术架构及开发规范文档

JAVA技术架构及开发规范文档

1引言

1.1目的

通过对系统整体架构和技术规范的描述.为下一步大规模设计开发提供基础和规范。也希望广大JAVA项目开发的程序猿们提出宝贵的建议.不断完善。

1.2对象与范围

架构师.高级工程师.项目经理.项目管理人员,开发人员.测试人员。

1.3概述

系统实现方案,以实现功能为主.效率性能为辅. 但设计兼顾未来性能的扩展,以减少未来重构的工作量。

wcbapp按逻辑分为两层.第一层用户服务接入. 第二层内部服务。第一层项目不分模块,以二级目录形式表示不同模块,第二层根据不同服务分模块,第

一层和第二层之间使用hessian通信。

第一层和第二层独立部署.第二层的不同模块也可以独立部署。

下项目考虑第一层分模块的二级域名独立部署. 并实现单点登荥。

web app采用集群负载均衡,数据库采用负载均衡和读写分离.以满足一定的性能需求。

文档描述了各层结构和模块使用的技术和框架。最后描述了开发的规范和用到的开发工具。

文档只是描述了项目的架构.

2系统架构图

系统架构如下

3层次和模块

3.1前端负载均衡

Nginx是一个口碑很好的开源免费WEB服务器,国内很多大型网站都转选Nginx平台.比如將讯,豆瓣等。Nginx可以实现动靜分离和web app的负载均衡。

3.1.1动静分离

动靜分离可以很好得分担服务器的负载,有两种方式实现动靜分离。

1. 使用2级域名,配置专门的靜态文件服务器。

2. 利用Nginx的url转发功能,把静态请求转发到靜态服务器或在Nginx本地込理.动态请求转发到应用服务器。

我们目前部署上采用第二种方式.同时也实现第一种方式。系统可以配置动态服务器地址和静态服务器地址,在生成页面时获取这两个地址.对图片、js脚本、css和靜态页面使用静态配置生成url,对ajax清求和动态页面使用动态服务器地址生成urlo

3.1.2负载均衡

Nginx可以配置upstream服务器组,实现组内的负载均衡。通过ip_hash的方式把动态请求转发到组内的某台服务器.同时保证客户端在IP不变的情况下—直访问同一台服务器.解决session保持问题。

3.2 Web app

网站前端,基Tj2ce. spring框架开发。

3.2.1页面展示和控制

系统有三种页面方式。

动态同步请求.通过velocity模板生成页面.客户端刷新整个页面。

ajax异步请求。Ajax舁步请求又有三种形式:与velocity模板结合返回html串:返回json格式;直接返回简单的字符串。

3模板生成的纯静态页面

前台页面采用的框架和第三方技术有:

jqucry-corc (事件处理.ajax请求,页面刷新......)o

Jqzoom (图片放大器)

3. Jqucry-validator(输入验证)

3.2.2权限安全控制

使用apache shiro框架实现权限控制。Shiro是一个强大、使用简单的权限安全框架。同时Shiro也能与 cas单点登录整合,方便在下项目扩展多个应用模块。

框架把权限系统分成subject(当前用户). manager(管理所有用户),rcalms(权限数据)三层。支持

基于实际资源和基于角色的权限校验.同时

我们扩展 shiro 的 Username Password? oken, Realm 实现基于验证码和数据库用户密码的用户登录验证。

在过滤器层.我们暂时只使用shiro的3种类型过滤器控制访问:

1. AnonymousFiltcr匿名过滤器任何人可以

访问。

2. AuthcnticatingFillcr认证过滤器必须通过身份认真才能访问(跳转到登录页面)。

可以对当前subject直接调用方法完成判断是否登录,登录.注销等操作.方便对登录功能的扩展。

3.2.3控制器层

采用spring 基于注解的控制器.控制器支持

velocity视图返回.ajaxjson返回和ajax text返回。

3.2.4数据验证

使用和扩展 apache 的 common-validator。

3.2.5逻辑层

采用spring基于注解的事务控制。

3.2.6数据持久层

采用ibatis框架,基于sqlmap配置实现数据的读写, sqlmap配置可以控制底层sql 语句,便于数据库的调优。

3.2.7缓存的处理

使用缓存可以降低与数据库的交互次数.极大提高系统性能。我们采用ehcache缓存框架。用到两种缓存方式:

1 口页面缓存:直接在过滤器层对页面进行缓存処理,在过滤器层就可以返回缓存的页面.不用转到控制器去处理。对于页面比较复杂.调用业务逻辑比较多的页面.采用页面缓存效果很好.比如首页。

2口基于注解的方法缓存.可以对方法的返回值缓存. 存入的参数可以组成key。可以在逻辑层使用缓存, 也可以在持久层试用。对于请求简单.访问呈大,但修改频率比较低的数据进行缓存可以达到很好的效果。比如商品分类.系统数据字典,地区等数据。

Ehcachc支持分布式缓存.chcachc支持服务器之间通过rmi调用保持所有服务器之间缓存同步。

缓存的两种过期机制:

!□定时过期.直接通过ehcachc的配置确定缓存过期频率。

2口主动通知.管理员在后台系统进行某些操作后.通过hessian远程调用通知应用服务器缓存过期。只需通知一台应用服务器.应用服务器之间通过ehcache自带分布式缓存复制方式同步缓存。

后台管理系统可以提供刷新缓存功能,管理员在后台管理系统主动刷新缓存。

3.2.8去其他模块之间的通信

通过hessian远程调用框架,实现与其他模块功能之冋的通信。

Hessian是一个基于http的二逬制远程过程调用框架,比websenuce更高效。与Spring框架很好结合,开发简单。

3.3后台管理系统

管理员用来维护网站的系统。基于j2cc spring框架。与网站前台使用到的技术差不多.现只介绍不同点:

3.3.1页面的展示

大部分请求采用页面刷新的机制。

头部,中部左侧菜单和底部固定不变。中部右ffll] iframc 为主操作区,毎次操作刷新页面。

商品描述的编辑需要使用到富文本编辑器,我们采用开源的TinyMCE, TinyMCE在国内应用比较广泛。

332缓存机制

后台系统访问不是很频繁.同事管理员需要的是实

时的数据.所以后台管理系统不对数据进行缓存。

3.3.3权限管理

采用sping security框架进行权限的控制.基于用户、角色和资源的授权机制。

3.4支付模块:

支付模块主要功能是订单的管理.与银行等支付系统的交互。基于j2ec spring框架。采用spring mvc模式。

3.4.1与银行和其他支付系统的

交互

需要提供一个Url地址,供银行在用户完成支付后回调.通知系统已经支付成功。

3.4.2与内部模块之间的通信

主要来自网站前端的调用。基于hessian机制。

3.5物流模块

支付模块目前主要功能是调用物流公司的接口跟踪物流状态,随着系统的不断发展,在拥有自己的物流后,可能发展成一个庞大的系统。基于j2ee spring框架。采用spring mvc模式。基于hessian机制对外提供远程效用服务。

3-6邮件模块

邮件模块主要用来向客户发送邮件。基于j2cc spring 框架。采用spring mvc模式。

3.6.1邮件发送

使用java mail包发送邮件,支持以固定模板发送邮件。

3.6.2定时发送

使用spring+quartz框架实现定时任务发送邮件。

3.6.3与内部模块之间的通信

为网站前端和后台管理系统提供远程调用服务。基于 hessian 机制。

3.7短信模块

短信模块主要用来向客户发送短信。基于j2ce spring 框架。采用spring mvc模式。

3.7.1邮件发送

调用短信设备api发送短信.支持以固定模板发送短信。

3.7.2定时发送

使用spring+quartz框架实现定时任务发送短信。

3.7.3与内部模块之间的通信

为网站前端和后台管理系统提供远程调用服务。基于 hessian 机制。

3.8进销存模块

调用A8系统接口,实现库存的管理。基于j2ec spring 框架。采用spring mvc模式。

3.8.1 Web service 调用

采用spring+xfilc框架调用a8系统wcbscn(iceo

3.8.2与内部模块之间的通信

为网站前端和后台管理系统提供远程调用服务。基于 hessian 机制。

3.9搜索模块

为网站提供搜索服务。包括商品检索和问答式搜索的问题检索。基于j2ec spring框架。采用spring mvc模式。

3.9.1检索框架

我们使用国产开源corcScck搜索引擎.基于俄国开源项目Sphinx研发并独立开发的搜索引擎。自带中文分词器mmscg.有大量中文文档。提供JAVAAPL 索引建立效率高并且与业务无关。在国内有大量成功案例。

3.9.2与内部模块之间的通信

为网站前端提供远程调用服务。基于hessian机制。

3.10第三方服务调用模块

调用第三方合作服务商的接口。基于j2ee spring框架。

采用spring mvc模式。

3.10.1 Web service 调用

采用spring+xfilc框架调用第三方服务webscrvicco

3.10.2与内部模块之间的通信

为网站前端和后台管理系统提供远程调用服务。基于

hessian 机制。

3.11对外服务接口

对外部系统提供webscrvicc接口服务

3.11.1 Web service 服务

采用spring+xfilc框架对外提供wcbscrvicc服务。

3.11.2与内部模块之间的通信

调用内部其他模块的服务。基于hessian机制。

3.12数据库

使用mysql5.5数据库存储数据,并使用读写分离机制

提高数据库性能。

3.12.1数据库读写分离

我们使用开源的mysql代理Amoeba实现数据库的读写分离.把写请求发送到主服务器.读请求发送到从服务器.主从之间通过mysql自带的复制机制实现数据的同步。

3.12.2数据库负载均衡

Amoeba支持轮询和权重两种负载均衡机制,我们使用权重负载机制实现读服务器的负载均衡。

3.12.3数据库表引擎的选择

主服务器必须使用innodb支持事务的存储引擎.行级锁表。而从服务器可以考虑使用myisam引擎.不支持事务.表级锁表.具有更高的读写效率,但不支持外键。

3.12.4主从数据库的差异优化

主服务器只需要建立唯一索引和外键约束.其它针对对查询优化的索引可以不建立,这要可以提高主服务器的性能。

从服务器字段使用char而不用varchar,没有varchar, text, blob字段的表是靜态表,反之是动态表,静态表的检索效率要比动态表好若干倍。

4工程命名

工程以动物命名.结合了各种动物特征与我们各工程的职责:

公共接口工具magpie(喜鹊) 网站前台服务bull(公牛) 物流cheetah (猎豹) 支付lion (郷子) 进销存接口 fox(狐狸) 搜索dog (狗) 邮件eagle (鹰) 短信pigeon (鸽子) 后台管理horse(马) 调用第三方合作接口 mouse(老鼠) 对外服务接口 camcl(骆驼)

5工程规范

5.1工程目录结构

sre源码

WebContent

WEN-INF

lib jar 包

config配置文件

views 视图模板

layout布局模板

screen页面模板

. 各模块

common公共的

styles样式文件

resources资源文件

scripts js 文件

common 公共 js

……各模块.各开源js项目

5.2包结构

包命名基本原朋:小写字母开头.如果有多个单词.除第一个单词之外的单词首字母大写5.2.1公共工具接口工程

公共工具:https://www.wendangku.net/doc/8512749732.html,mon.util

各层的公共基类:https://www.wendangku.net/doc/8512749732.html,mon下的各子包

Java开发规范

Java开发规范

目录 第1章序言 (4) 第2章java一般性研发规范 (5) 2.1 代码格式 (5) 2.1.1包、类、方法的命名规范: (5) 2.1.2方法的命名应注意避免与java中具有特殊意义的名称例如equals, hashCode,clone,finalizer等冲突 (7) 2.1.3Java bean中取得boolean类型的属性值必须使用is****形式命名 (9) 2.1.4if,else,while,for等必须使用{} (9) 2.1.5类必须包含在包里,禁止出现无包的类 (10) 2.1.6类和方法必须拥有注释,注释量占总体代码25%以上,类头部,以及方法 头部的注释应符合javadoc标准。 (11) 2.2 基本语法 (12) 2.2.1不能随意捕捉异常,原则上谁捕捉谁处理 (12) 2.2.2if,while,try,finally,switch ,synchronized ,static instantiation 里面应有相应的逻辑处理,不能为空。 (13) 2.2.3在处理循环中,不能在程序中人为的改变步长。 (14) 2.2.4将简单类型int,short,float,double等转化成字符串时,需使用其对 应类的toString方法。 (14) 2.2.5javaBean中hashCode,以及equals方法必须同时override。 (15) 2.2.6懒式方式创建对象:不能采用双检查惯用法 (18) 2.2.7不能在finally中返回值。 (19) 2.2.8Boolean实例化时,应用使用Boolean.valueOf,Boolean.TRUE, Boolean.FALSE。 (19) 2.2.9Integer,Byte,Short,Long等实例化时,应用使用valueOf (20) 2.2.10对于多个if语句嵌套的情况下能够整合尽量整合。 (20) 2.2.11override function,不能只有super.function语句,否则视为无效代码 21 2.2.12Collection.toArray的注意事项。 (21) 2.2.13对于BigDecimal方法,应避免使用float值,double值进行创建,应使 用字符串形式创建。 (22) 2.2.14String,BigDecimal,BigInteger等值类型调用replace,add等方法的注 意事项。 (23) 2.2.15需要注意的引起NullException的语句。 (23) 2.2.16ResultSet使用next时,需要判断是否具有记录再进行一下步操作。 25 2.2.17字符串使用相应的规则。 (25) 2.2.18禁止直接调用 System.gc(),System.getRuntime().gc(),System.runFinalization()。 (27) 2.2.19finalize相应的规则。 (27) 2.2.20禁止在代码中使用System.out,ex.printStackTrace打印日志。 (28) 2.2.21系统资源释放(谁创建的,谁关闭) (29) 2.2.22使用Clone时相应的规则。 (32) 2.2.23java Bean类必须实现Serialize接口。 (33)

Java编程规范试题

姓名: ____________ 工号:_______________ 部门:____________ 成绩: 一. 判断题(共15题,每题2分,直接在括号内打“/或“X”) 1、任何时候都不要使接口可以序列化。x 2、相对独立的程序块之间、变量说明之后必须加空行。V 3、当程序需要释放对象的时候,应该手工调用fin alize 方法以释放对象。x 4、公司的规范要求注释率是20%以上,并且必须有助于对程序的阅读理解。x 5、为了程序更加简洁,我们应该尽量使用下面的方式来赋值: a = b = 1 。x 6、每个类都需要定义构建器。x 7、类名、方法名、属性名的命名,都应该使用意义完整的英文描述。V 8、main() 方法的定义是public static void main(String args[]) 。x 9、常量名应该使用全大写,英文单词之间用下划线或者-分隔开。并且,常量应该使用final static 修饰。x 10、公有方法参数名可以和属性名相同,但局部变量不能和属性名相同。V 11、一两行代码就能完成的功能没有必要编写方法实现。x 12、对于模块间接口方法的参数的合法性检查,调用者和被调用者都应该对参数进行合法性检查。 x 13、运行期异常使用RuntimeException的子类来表示,必须在方法声明上加throws子句。x非运行 期异常是从Exception继承而来的,不用在可能抛出异常的方法声明上加throws子句。x 14、使用Objectstream 的方法后,调用release(),释放对象。X 15、减小单个方法的复杂度,使用的if, while, for, switch 语句要在10个以内。V 二、单项选择题(共23题,每题2分) (c ) 1、排版时,代码缩进应该采用的方式是: (A)Tab缩进 (B)2个空格缩进

JAVA开发规范文档

Java 开发规范文档 一:目的 使本组织能以标准的,规范的方式设计和编码。通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;并以此形成开发小组编码约定,提高程序的可靠性,可读性,可修改性,可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。 二:代码组织与风格 1:长度:为便于阅读和理解,单个函数的有效代码长度当尽量在100行以内(不包括注释行),当功能模块过大时往往采用使用子函数将相应的功能抽取出来,这也有利于提高代码的重用度。 2:单个类不宜过大,当出现此类过大时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。尽量避免使用大类和长方法。3:间隔:类,方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。操作符两端应当各空一个字符以增加可读性。 三:注释 1:注释应该增加代码的清晰度。代码注释的目的时要使代码更易于被其他开发人员等理解。2:保持注释的简洁。 3:注释信息应该包括代码的功能。 4:除变量定义等较短语句的注释使用行尾注释外,其他注释当避免使用行尾注释。 5:JavaDoc规范 对类,方法,变量等注释需要符合javadoc规范,对每个类,方法都应详细说明其功能条件,参数等。类注释中应当包含版本和作者信息。 1)类,接口注释在类,接口定义之前当对其进行注释,包括类,接口的目的,作用,功能,继承于何种父类,实现的接口,实现的算法,使用方法,示例程序等。 2)方法注释以明确该方法功能,作者,各参数含义以及返回值等。

3)其他注释应对重要的变量及不易理解的分支条件表达式加以注释,以说明其含义等。四命名规范 1:对变量,类,接口及包的命名应该使用英文。严禁使用汉语拼音及不相关单词命名。更不可以使用汉字来进行命名。采用大小写混合,提高名字的可读性。一般应该采用小写字母,但时类和接口的名称的首字母,以及任何中间单词的首字母应该大写。包名全部小写。 2:尽量少用缩写,但如果一定要用,当使用公共缩写和习惯缩写等,如implement可缩写为impl,manager可缩写成mgr等。 3:包名一般以项目或模块名命名,少用缩写和长名,一律小写。 包名按照如下规定组成[基本包].[项目名].[模块名].[子模块名].…. 如:org.skyinn.skyhome.dao.hibernate。 不得将类直接定义在基本包下,所有项目中的类,接口等都当定义在各自的项目和模块包中。 4:类,接口所有单词首字母大写,最好能够见名知意。一般采用名词。接口可带I前缀。 或able,dao后缀。 5:字段常量采用完整的英文大写单词,单词之间用下划线连接,如DEFAULT_V ALUE. 6:变量和参数对不易识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX,hasXXX等等。除第一个单词外其余单词的首字母大写。7:集合采用复数名称来表示队列中存放的对象类型,名词采用完整的英文描述。 例如:Vector vProducts= new Vector(); Array aryUsers= new Array(); 8:方法方法的名称应采用完整的英文描述,大小写混合使用:所有中间单词的第一个字母大写。方法名称的第一个单词常常采用一个强烈动作色彩的动词。取值类使用get前缀,设置类使用set前缀。例如getName(),setSarry()。 9:异常类名由表示该异常类型的单词和Exception组成,如ActionException。异常实例一般使用e,ex等。 10:数组的命名 数组应该总是用下面的方式来命名:byte[] buffer; 而不是:byte buffer[]; 五:类与接口 1:基本原则:一个类只做一件事情。另一个原则时根据每个类的职责进行划分,比如用User 来存放用户信息,而用UserDAO来对用户信息进行数据访问操作,用UserServer对用户信息的业务操作等等。多个类中使用相同方法时将其方法提到一个接口中或使用抽象类,尽量提高重用度。不希望被实例化的类的缺省构造方法声明为private。 2:一般而言,接口定义行为,而抽象类定义属性和共有行为,注意2者的取舍,在设计中可由接口定义公用的行为,由一个抽象类来实现其部分或全部方法,以给子类提供统一的行为为定义。 六:方法 一个方法只完成一项功能。方法参数类型和参数返回值尽量接口化,以屏蔽具体的实现细节,提高系统的可扩展性,例如:public void addUser(List userList){} public List listAllUsers(){} 七:Web 命名规范 一:jsp页面命名 对于某个功能块的增删改查页面定义,最好使用

华为JAVA编程规范

1 Java 编程规范 1.1 排版 1.1.1 规则 规则1程序块要采用缩进风格编写,缩进的空格数为4个,不允许使用TAB缩进。(1.42+) 说明:缩进使程序更易阅读,使用空格缩进可以适应不同操作系统与不同开发工具。 规则2分界符(如大括号…{?和…}?)应各独占一行,同时与引用它们的语句左对齐。在函数体的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序 或者static、,synchronized等语句块中都要采用如上的缩进方式。(1.42+) 示例: if (a>b) { doStart(); } 规则3较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐, 语句可读。(1.42+) 示例: if (logger.isDebugEnabled()) { logger.debug("Session destroyed,call-id" + event.getSession().getCallId()); } 规则4不允许把多个短语句写在一行中,即一行只写一条语句(1.42+) 说明:阅读代码更加清晰 示例:如下例子不符合规范。 Object o = new Object(); Object b = null; 规则5if, for, do, while, case, switch, default 等语句自占一行,且if, for, do, while,switch等语句的执行语句无论多少都要加括号{},case 的执行语句中如果定义变量必须加括号{}。 (1.42+) 说明:阅读代码更加清晰,减少错误产生 示例: if (a>b) { doStart(); }

JAVA开发规范

1.编程规范 (一)命名规范 1.【强制】所有编程相关的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 反例:_name / name_ / $name / name$ 正例:name 2.【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。 反例:XingMing [姓名] /xingBie() [性别] 正例:name[姓名] sex[性别]等国际通用的名称,可视为英文。 3. 【强制】类名使用UpperCamelCase(第一个词的首字母,以及后面每个词的首字母都大写,叫做“大骆驼拼写法”) 风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / DTO / VO / DAO 等。正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

4. 【强制】方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase (第一个词的首字母小写,后面每个词的首字母大写,叫做“小骆驼拼写法”)风格,必须遵从驼峰形式。 正例: localValue / getHttpMessage() / inputUserId 5. 【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 正例: MAX_STOCK_COUNT 反例: MAX_COUNT 6. 【强制】抽象类命名使用 Abstract或Base 开头;异常类命名使用 Exception结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。 7. 【强制】中括号是数组类型的一部分,数组定义如下:String[] args; 请勿使用String args[]的方式来定义 8. 【强制】POJO类中的任何布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是isSuccess(),RPC框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。

Java编程规范

Java编程规范本文引用阿里Java开发手册。GitHub阅读地址: 目录 编程规约 - 命名规约 - 常量定义 - 格式规范 - OOP规约 - 集合处理 - 并发处理 - 控制语句 - 注释规约 - 其他 - 异常处理 - 建表规约 - 索引规约 - SQL规约

- ORM规约 编程规约 命名规约 1、【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 反例: _name / __name / $Object / name_ / name$ / Object$1 2、【强制】所有编程相关的命名严禁使用拼音与英语混合的方式,更不允许直接使用中的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即纯拼音的命名方式也要避免采用。 反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 变量 = 3; 正例: ali / alibaba / taobao / cainiao / aliyun / youku / hangzhou 等国际通用的名称,可视为英文。12345 3、【强制】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名) DO / DTO / VO / DAO 等。 正例: MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例: macroPolo / UserDo / XMLService / TCPUDPDeal

/ TAPromotion123 4、【强制】方法名、参数名、成员变量、局部变量都统一只用 lowerCamelCase 风格,必须遵从驼峰形式。 正例: localValue / getHttpMessage() / inputUserId1 5、【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 正例: MAX_STOCK_COUNT 反例: MAX_COUNT123 6、【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。 7、【强制】中括号是数组类型的一部分,数组定义如下:String[] args ; 反例:请勿使用 String args[] 的方式来定义1 8、【强制】 POJO 类中的任何布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是 isSuccess(), RPC框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。1 9、【强制】包名统一使用小写,点分隔符之间有且仅有一

java项目团队开发规范

项目团队开发规范

修订历史记录

目录 1引言 (6) 1.1 编写目的 (6) 1.2 预期读者 (6) 1.3 编写背景 (6) 2概述 (7) 2.1 目标 (7) 2.2 修改及完善 (7) 3详细规范 (7) 3.1 使用的工具 (7) 3.2 框架设计 (7) 3.3 包目录 (8) 3.4 编码规范 (10) 3.4.1 目的 (10) 3.4.2 依据 (10) 3.4.3 具体规范 (10) 3.4.3.1 编码风格 (10) 3.4.3.1.1 缩进 (10) 3.4.3.1.2 空格 (11) 3.4.3.1.3 对齐 (12) 3.4.3.1.4 空行 (12)

3.4.3.1.5 代码长度 (13) 3.4.3.1.6 行数 (13) 3.4.3.1.7 注释 (14) 3.4.3.2 代码效率 (17) 3.4.3.2.1 综述 (17) 3.4.3.2.2 具体实现 (17) 3.4.3.3 异常处理 (17) 3.4.3.3.1 处理CHECK 异常与UNCHECK异常 (17) 3.4.3.4 程序调试 (17) 3.4.4 日常交流 (18) 3.4.4.1 互相促进 (18)

1引言 1.1 编写目的 本文档作为项目团队开发规范的说明书,描述了项目开发过程中的使用的工具,框架,代码编写规范及注意问题,作为项目团队建设,开发及测试工作的依据。 1.2 预期读者 本文档的预期读者包括以下几类: ?项目组长 ?项目组全体成员 1.3 编写背景 根据公司现有的开发状况,决定组件稳定的项目开发团队,制定全体团队成员共识的开发规范,有助于提高项目开发的效率、项目团队整体水平的提升。

java开发文档

Java 开发规范 1.命名规范 1.包命名规范: 1.业务模块的包命名格式如下: src/业务模块名称 2.Service接口的包命名格式如下: com.greencloud.service 3.Service接口实现类的包命名格式如下:com.greencloud.service.impl 4.Dao 接口的包命名格式如下:com.greencloud.dao 5.Dao 接口的实现类的包命名格式如下:com.greencloud.dao.impl 6.Fa?ade接口的包命名格式如下: com.greencloud.service.facade 7.Fa?ade接口的实现类的包命名格式如下:com.greencloud.service.facade.impl 8.业务域对象的包命名格式如下:com.greencloud.entity 9.异常类的包命名格式如下:com.greencloud.exception 10.枚举类的包命名格式如下:com.greencloud.enum 11.常量类的包命名格式如下:com.greencloud.contant 12.帮助类的包命名格式如下:com.greencloud.util 2.类命名规范: 1.Service接口的命名格式如下: I+表名+service 2.Service接口实现类的命名格式如下: 表名+serviceImpl 3.Dao 接口的命名格式如下:I+表名+dao 4.Dao 接口的实现类的包命名格式如下:表名+daoImpl 5.Fa?ade接口的命名格式如下: I+包名+facadeService 6.Fa?ade接口的实现类的命名格式如下:包名+facadeServiceImpl 7.业务域对象的命名格式如下:表名 8.异常类的命名格式如下:描述异常情况+exception 9.枚举类的命名格式如下:描述枚举情况+enum 10.常量类的命名格式如下: 描述常量情况+contant 11.帮助类的命名格式如下: 描述帮助类型+util 3.方法命名规范: 1.查询单个实体对象的方法命名格式: 1.查询单个的实体对象:load+实体对象名+by+字段名 2.如果类中只存在一个加载实体对象的方法:load+实体对象名 3.如果加载一个实体对象需要多个字段组合查询:load+实体对象名+by+最核 心的查询字段或者load+实体对象名+by+ 核心字段1+And+核心字段2 4.失败抛出flex.messaging.service.ServiceException异常或者它的子类 5.成功返回实体对象 例如:通过code字段查询CodeBase实体对象 public CodeBase loadCodeBaseByCode(String code) throws ServiceException 2.查询多个实体对象的方法命名格式:

Java编程要求规范精彩试题

JAVA编程规范--试题 姓名:工号:部门:成绩: 一. 判断题(共15题,每题2分,直接在括号内打“√”或“×”) 1、任何时候都不要使接口可以序列化。x 2、相对独立的程序块之间、变量说明之后必须加空行。√ 3、当程序需要释放对象的时候,应该手工调用finalize方法以释放对象。x 4、公司的规范要求注释率是20%以上,并且必须有助于对程序的阅读理解。x 5、为了程序更加简洁,我们应该尽量使用下面的方式来赋值:a = b = 1 。x 6、每个类都需要定义构建器。x 7、类名、方法名、属性名的命名,都应该使用意义完整的英文描述。√ 8、main() 方法的定义是public static void main(String args[])。x 9、常量名应该使用全大写,英文单词之间用下划线或者-分隔开。并且,常量应该使用 final static修饰。x 10、公有方法参数名可以和属性名相同,但局部变量不能和属性名相同。√ 11、一两行代码就能完成的功能没有必要编写方法实现。x 12、对于模块间接口方法的参数的合法性检查,调用者和被调用者都应该对参数进行合 法性检查。x 13、运行期异常使用RuntimeException的子类来表示,必须在方法声明上加throws子句。 x非运行期异常是从Exception继承而来的,不用在可能抛出异常的方法声明上加throws 子句。x 14、使用ObjectStream 的方法后,调用release() ,释放对象。X 15、减小单个方法的复杂度,使用的 if, while, for, switch 语句要在10个以内。√ 二、单项选择题(共23题,每题2分) ( c )1、排版时,代码缩进应该采用的方式是: (A)Tab缩进 (B)2个空格缩进 (C)4个空格缩进 (D)8个空格缩进

java开发规范文档

一千零一夜产品部系统开发规范V1.0 一千零一夜途遇科技有限公司 2015-11-03

修改记录 目录 1前言 (4) 2开发管理 (4) 3项目周期 (4) 4命名规范 (5) 4.1项目编号命名规范 (5) 4.2文档命名规范 (5) 4.3路径管理 (5) 4.4jsp/html命名规范 (6) 4.5数据库命名规范 (8) 4.5.1表名规范 (8) 4.5.2字段规范 (8) 5文档规范 (8) 6代码规范 (9) 6.1Java源代码规范 (9) 6.1.1命名 (9) 6.1.2代码格式 (11) 6.1.3注释 (12) 6.1.4其他 (13) 6.2jsp/html代码规范 (13) 6.3数据库开发规范 (15) 6.3.1主键 (15) 6.3.2日期类型 (16) 6.3.3固定字段 (16) 6.3.4取值规范 (16) 6.3.5数据库开发工具 (16)

6.3.6Sql书写规范 (17) 6.4其他规范 (17) 7实战代码规范 (18) 7.1Java源代码规范 (18) 7.1.1java代码命名与格式 (18) 7.2jsp/html代码规范 (26) 8FAQ (29) 8.1Logic类中新增数据方法怎么写 (29) 8.2Logic类中修改数据方法怎么写 (30) 8.3Logic类中删除数据方法怎么写 (31) 8.4怎样创建一个没有底部按钮的窗口 (32) 8.5怎样设置弹出窗口的标题 (32) 8.6怎样重写提交数据的方法 (33) 8.7怎样创建单grid的页面 (33) 8.8怎样多个页签的grid的页面 (34) 8.9怎样创建左边树右边grid的页面 (34) 9代码检查规定 (34) 10附录1:JPA使用指南javax.persistence的注解配置 (34)

javaweb开发规范

Java web开发规范 1、前言 为了使软件开发过程有章可循,保证软件质量,加强开发管理。 2、开发管理 项目进度周报表格如下: 项目编号汇报人汇报日期项目进度详细描述其他问题 3、命名规范 3.1项目编号命名规范 命名方式:项目英文/中午拼音名称_开发组编号_序列号 序列号由3为数字组成,不足的用’0’补齐。 3.2文档命名规范 命名方式:项目英文/中午拼音名称_文档名称_序列号_编写人名称/编号 3.3jsp/html命名规范 1、jsp与html文件名全部小写,并遵循如下的规范: a.数据/内容显示页: 名词,多个单词用下划线分隔,要求能说明显示内容的信息,为避免冲突,可加上“_list”。例如: new_message.html或my_file_list.jsp b.操作处理页 命名格式:名词_下划线_动词,例如:file_delete.jsp。 c.含frame页面

中的name属性命名的格式是①xxx_②xxx_③xxx ①xxx部分用来标识当前页面隶属于整个系统中的哪一功能模块。 如:属于ebwebmail模块则写ebwebmail,其它情况依次类推。 ②xxx部分标识当前页面所要完成的功能。 如:完成用户登录的功能则被标识为login,其它情况依次类推。 ③xxx部分用来用来表示页面在浏览器窗口所处的位置。 处于浏览器窗口的顶部则标识为top,其它情况依次类推。 例如:ebwebmail_inbox_top.jsp src属性相应的文件名根据情况建议在原命名规范上用下划线加上所处窗口的位置。 2、javascript脚本文件命名方式: 脚本函数都以①xxx_②xxx的方式命名。 ①xxx对应页面隶属的模块。 ②xxx表示函数所要实现的功能(动宾结构),多个单词用下划线连接。 例如:ebwebmail_send_mail() 模块通用的脚本函数必须集合于一个js文件中,在页面上通过形式导入。js文件名命名使用模块名,例如:ebwebmail.js。 如果项目已经提供了公共js脚本,则优先使用公共js脚本中提供的函数。 所有定义方法的