oa项目命名与编码规范
编写说明
标题:项目命名与代码编写规范 版本历史:
1 编写目的
作为朗沃进行项目开发的技术规范,是进行软件质量控制的必要规范。
2 命名
2.1 业务模块名
在需求建模阶段按照用例划分来对业务模块进行命名,要求简洁易懂。
2.2 包的命名 2.2.1 业务包命名
业务包指与项目所要实现的业务逻辑相关的包。 包的命名由前缀和包的逻辑名组成,其中 前缀:com.lovo.+项目名称
逻辑名:业务模块名+层名,如果项目规模不是很大,直接采用层名,例如: project.action或action project.service或service
业务模块“项目管理”完整的包名示例:
com.lovo.cmts.action(web.action) com.lovo.cmts.domain(model) com.lovo.cmts.service
2.2.2 基础包命名
基础包指在项目中供多个业务包共用的包,一般放置到下列包中 com.lovo.cmts.common com.lovo.cmts.utils
2.3 Java命名
Java命名的时候需要同时兼顾业务和技术,命名要能体现软件的层次结构。 接口命名
命名规范:首字母大写,如果有多个单词,每个单词头字母大写 例如:StudentInfo servlet类命名:
命名规范:以Servlet单词结尾 例如:LoginServlet Struts Action类命名:
命名规范:Action的命名以域模型对象名称来制定,域模型对象名称Action 例如:
一个域模型对象名称为Diary,其对应的action为DiaryAction
Action中所有对service的引用,变量命名必须以*Service结尾,比如:userService。
Struts Form类命名:
命名规范:Form的命名以域模型对象名称来制定,域模型对象名称Form 例如:
一个域模型对象名称为Diary,其对应的Form为DiaryForm 业务逻辑接口命名:
命名规范:业务逻辑接口的命名以域模型对象名称来制定, I域模型对象名称Service 例如:
一个域模型对象名称为Diary,其对应的业务逻辑接口为IDiaryService
业务逻辑接口实现命名:
命名规范:业务逻辑接口的命名以域模型对象名称来制定, 域模型对象名称ServiceImpl 例如:
一个域模型对象名称为Diary,其对应的业务逻辑接口为DiaryServiceImpl
2.4 Jsp页面命名
命名规范:以模块名+ _开头,jsp页面名称要以小写字母开头,如果有多个单词组成,后面的单词以大写字母开头。名称要体现出该页面的意义,最好能够与模块名称联系在一起。 例如
列表页面,project_list.jsp 详细信息页面,project_detail.jsp
3 项目目录结构
3.1 总体目录结构
根据eclipse工具的特征,项目的目录结构为: 姓名(例:wangxh)
----存放java文件 (源文件结构详见后续描述)
|--config --存放相关配置文件 WebRoot
|--images --存放web程序所需的公共图片 |--css --存放web程序所需的公共样式表 |--js --存放web程序所需的公共js文件 |--commons --存放web程序所需的公共文件
|--upload 上传的公共文件,其下可以继续建目录存放不同类别文件 |--功能模块文件夹(存放与某个功能模块相关的资源) |--images --存放与该功能模块相关的图片 |--css --存放与该模块相关的样式表文件 |--js --存放与该模块相关的js文件 |--jsp或html页面(不建文件夹,直接存放)
|--upload 上传的文件,其下可以继续建目录存放不同类别文件 |--WEB-INF |--classes
|--lib --项目中的包
|--tld doc
|--rq --需求相关文档 |--plan --项目计划相关文档
|--db --数据库相关文档(包括建表sql,数据初始化sql)
--tld文件
3.2 配置文件规范
Spring配置文件:
系统中所有的配置文件统一放到config/下。 spring文件配置
Spring配置文件放在
config/spring/
spring-baseConfig.xml 基本配置文件(dao的配置也是这里
) spring-service.xml,业务类配置文件
以上是公共部分文件,每个人的struts action在spring中的配置文
件命名规则为:
spring-action-模块名-姓名拼音缩写.xml
spring-action-sale-zs.xml,表示张三所写的销售模块的action配置。 spring-action-schedule-ls.xml,表示李四所写的计划模块的action配置。
struts配置文件:
● struts配置文件放在config/struts/
● struts-baseConfig.xml 基本配置文件(全局出错定义、process的定
义等)
● 除此之外为个人配置文件,命名规则为: struts-模块名-姓名拼音缩写.xml
struts-sale-zs.xml,表示张三所写的销售系统的action配置。 struts-schedule-ls.xml,表示李四所写的计划系统的action配置。
ibatis文件配置
● ibatis配置文件放在onfig/ibatis/
● ibatis-baseConfig.xml 基本配置文件,此文件中要启用命名空间。 ● 除此之外为个人配置文件,命名规则为:
ibatis-模块名-实体对象名-姓名拼音缩写.xml,例如:
ibatis-sale-place-zs.xml即表示销售系统中的 place实体对象,由张三所写。
iabtis-schdule-schduleTemple-ls.xml即表示计划系统中的 计划模板实体对象,由李四所写。
hibernate文件配置命名规则
config/hibernate/中存放hibernate.cfg.xml,如果该文件中的配置已经移到spring中,此文件可不写。
config/hibernate/hbm/下存放所有实体类映射文,如过多,可考虑按模块分包存放。
3.3 源代码包结构规范
根目录结构 Wangxh--
|--com.lovo.cmts.dao
--项目中的持久化接口
|--impl --持久接口实现类
|--com.lovo.cmts.service --项目中的业务层接口
|--impl --业务层实现类
|--com.lovo.cmts.domain(model) --领域层对象,其下可继续按模块划分子包
|--com.lovo.cmts.vo(dto) --值对象,其下可继续按模块划分子包 |--com.lovo.cmts.exception --业务异常包 |--com.lovo.cmts.util --工具包 |--com.lovo.cmts.commons --公共类包 |--com.lovo.cmts.web --与V层、C层相关类
|--struts/formbean –formbean对象,可按模块分包存放 |--struts/action –action对象,可按模块分包存放 |--util
–web工具类(包装器、过滤器等)
|--test --项目中的所有测试类,其下可继续按业务模块建子包分类
对以上源文件中的目录结构说明如下:
(1)domain,存放领域模型对象
如果对象较多,可考虑按模块再划分子包,分类保存,以方便维护: 比如:com.lovo.cmts.domain.sale.Order,表示保存在sale子包中的订单领域对象;
com.lovo.cmts.domain.message.Mail,表示保存在message子包中的邮件领域对象;
(2)dao包
● dao持久层对象,保存系统中所有持久层接口,
比如:com.lovo.cmts.dao.IOrderDao,表示订单持久层对象 ● dao.impl
持久化接口实现类,比如:com.lovo.cmts.dao.impl.OrderDaoImpl,
表示订单持久化实现类;(注:如果采用通用DAO方法,就建立CommonDAO与
QueryDao,只需这两个接口即可) (3)service包
● service包存放服务对象接口
比如:com.lovo.cmts.service.ISaleService,表示销售业务接口。 ● service.impl包中存放业务类实现方法:
比如:com.lovo.cmts.service.impl.SaleServiceImpl,表示销售业务
接口实现类。 (4)exception 系统异常包
异常可按业务分类,分包存放,所有异常父类选择为java.lang.Exception。 比如:com.lovo.cmts.exception.SendMailException,表示发送邮件失败异常。
(5)util包
该包中存放项目中用的的工具类,比如:字符串处理、日期处理、MD5加密库、UUID生成器、验证码生成器、图片处理类等。
(6)commons包
项目中其它模块用到的公共类,比如:常量接口。 (7)vo包
项目中用到的值对象或DTO对象,可根据业务要求及前台要求,自行定义,但统一以VO结尾,比如:MailVO,表示邮件值对象。
(8)web包
该包存放所有与控制层与视图层相关的类,该包下有如下子包:
● web.struts.formbean,存放静态formbean( 类命名以Form结尾,比如:LoginForm)
● web.struts.action,存入系统中的所有action,所有action均继承自系统
中的BaseAction。( 类命名以Action结尾,比如:LoginAction) ● web.util,存放web相关工具,比如:包装器,乱码过滤器等
(9)测试类
以test开头,分类存放
比如: test.com.lovo.cmts.service.SaleServiceTest,表示销售业务测试类
test.com.lovo.cmts.dao.SaleDaoTest,表示销售持久对象测试类
4 注释规范
类注释
/**************************************************************** *
* 类逻辑名称 : 项目业务类 * 类功能 :
实现项目对象的持久化
* @Author 编程者 : 张三 * 初作时间 : 2009/6/20 * 关联类 : *
通用DAO:CommonDAO;
* 领域对象:Project; * 处理流程 : *
* 调用示例 : *
* ---------------------------------------------------------- * 时间: 修改者: * 修改内容: *
* ---------------------------------------------------------- * 时间: 修改者: * 修改内容: *
* ----------------------------------------------------------
*
*
*****************************************************************/
方法注释
对于业务方法都应该加上注释,但GET,SET不用添加注释
/**
* 方法名称
* 方法实现的业务说明
* @param 进行参数说明
* @return 对返回值进行说明
*/
JSP页面注释
采用HTML注释进行注释,对于使用标记库的循环如forEach需要在开始和结束时进行注释
本次OA项目规范:
1. 所有页面、代码、项目、服务器编码采用utf-8.
2. 主要软件:
a) MyEclipse professional 2014 项目名 GoodOA
b) 软件 Tomcat 7
c) 数据库 mysql 数据库名 db_oa
3. 项目目录结构
4. 注意:
a) 类、方法、变量需按规范命名,命名见名知意。
b) 所有类、公开方法、属性必须打注释,注解应详细、准确,功能增加修
改、注释需保留。