已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ECSC编码规范目录1.简介11.1概述11.2目的11.3参考资料12.工程13.Java规范23.1包名和类名23.2Controller33.3Service33.4Dao43.5Model43.6Job43.7常量43.8变量和方法名43.9字符串拼接54.Dao规范54.1整体规范54.2HQL:增,改54.3HQL:删64.4HQL:查-不分页74.5HQL:查-分页84.6SQL:增删改104.7SQL:查,不分页105.日志规范116.异常规范117.方法名118.代码组织与风格128.1导入eayun formatter模板128.2导入code template模板128.3缩进,间隔,风格等139.注释139.1基本原则1310.声明1411.数据库规范141. 简介1.1 概述本文提供一整套编写高效可靠的代码的标准、约定和规范。它们以安全可靠的软件工程原则为基础,使代码易于理解、维护和增强。最根本的原则:运用常识。当找不到任何规则或指导方针,当规则明显不能适用,当所有的方法都失效的时侯,运用常识并核实这些基本原则。这条规则比其它所有规则都重要。常识是必不可少的。1.2 目的本规范是使本项目能以标准的、规范的方式设计和编码,在使自己养成了良好的编码风格的同时,增强代码的可维护性。特别地,一致的代码注释风格,不仅有助于提高代码注释的可读性,同时为使用自动化工具进行开发文档的提取工作提供一致的基础数据。1.3 参考资料Java 编程指南见RUP(Rational Unified Process)中文版。Java技术手册(Java in a Nutshell)2. 工程Ecsc项目采用maven来管理,规范如下:1. groupId:固定为com.eayun2. artifactId:eayun-xxx。举例:eayun-common,eayun-mail3. packaging:packaging说明jarjava业务工程只包含java程序,其中eayun-common,eayun-base为底层的2个工程,其他工程按业务需要建war部署工程只包含html,js,xml,配置文件,不含java程序,根据业务需要依赖一些jar工程pom构建工程配置war工程和这些war工程依赖的jar工程4. 一些固定的工程工程名说明eayun-common工具类异常过滤器dao封装eayun-base所有的model+daoeayun-xxxjar业务工程,只包含这个工程的Service和Controller类3. Java规范3.1 包名和类名类型规范举例Controller包名:com.eayun.模块名.controller类名:XXController包名:com.eayun.system.controller类名:LoginControllerService接口包名:com.eayun.模块名.service实现类包名:com.eayun.模块名.service.impl接口名:XXService实现类名:XXServiceImpl接口包名:com.eayun.system.service实现类包名:com.eayun.system.service.impl接口名:LoginService实现类名:LoginServiceImplDAO包名:com.eayun.模块名.dao接口名:XXDao包名:com.eayun.system.dao接口名:UserDaoModel包名:com.eayun.模块名.model实体类名:BaseXX普通类名:XX包名:com.eayun.system.model实体类名:BaseUser普通类名:UserJob包名:com.eayun.模块名.job类名:XXJob包名:com.eayun.system.job类名:UserSyncJob3.2 Controller1. 一组业务操作一个类2. 多例模式 Scope(prototype)3. 每个public方法匹配一个.do跳转,并返回一个Json对象4. 只负责组织request传入的数据,并调用一个Service方法并返回结果(记录日志操作除外)3.3 Service1. 一组业务操作一个类2. 多例模式Scope(prototype)3. 涉及数据库操作的一个Service方法是一个事务 Transactional4. 可以调用任意多个DAO,也允许调用其他Service5. Service的方法不允许对异常进行处理,如有try-catch块,异常必须往上抛出3.4 Dao1. 一张数据表一个类,也可以额外根据业务要求建类2. 接口类,继承mon.dao.IRepository3. 用标签的方式扩展HQL4. 所有可变条件用预编译方式传参3.5 Model1. 实体类中,类名和表名对应,每个属性对应一个字段(类名和属性名遵从驼峰命名法)2. 普通类继承对应的实体类,并扩展自己的属性3. 使用BeanUtils.copyPropertiesByModel实现BaseXXX和XXX之间的转换3.6 Job1. 继承QuartzJobBean的计划任务3.7 常量1. 全大写,单词间用下划线分隔,比如:MY_NAME3.8 变量和方法名1. 变量和方法名必须有业务含义,禁用比如flag,list1等业务含义模糊的命名。2. 第一个字母小写,遵循驼峰命名法则,比如:myName3.9 字符串拼接1. SQL,HQL的拼接禁止使用String类,要用StringBuffer类实现拼接。4. Dao规范4.1 整体规范1. 接口,继承Irepository2. 如需扩展方法,用标签的方式写SQL4.2 HQL:增,改1. Object saveEntity(final Object entity)2. void saveOrUpdate(final Object entity)3. int executeUpdate(final String hql, final Object. values);4.3 HQL:删1. void remove(final Object entity)2. int executeUpdate(final String hql, final Object. values);4.4 HQL:查-不分页1. List find(final String hql, final Object. values);2. List findBy(final String hql, Map map);3. Query createQuery(String hql, Object. values);4. Query createSQLQuery(String hql);5. T findOne(ID id)根据主键查询对象4.5 HQL:查-分页1. Page pagedQuery(final String hql, final QueryMap qm, final Object. values)2. List query(String hql, QueryMap qm, Object. values);3. Query createQuery(String hql, Object. values);4. Query createSQLQuery(String hql);4.6 SQL:增删改1. void execSQL(String sqlString)4.7 SQL:查,不分页1. Query createSQLNativeQuery(String sql)2. Query createSQLQuery(String hql);5. 日志规范1. 规范1:如何定义log对象每个Service,Controller需要定义一个私有,静态log对象,比如:private static final Logger log = LoggerFactory.getLogger(TestController.class);2. 规范2:什么时候调用log方法1.public方法开始时记录:(“XX业务开始”)2.所有的Catch Exception记录:log.error(e.toString(), e);6. 异常规范抛出AppException,由框架处理7. 方法名适用于Service和Dao方法类型约定举例新增addXXXaddUser修改updateXXXupdateUser删除deleteXXXdeleteUser查询列表getXXXListgetUseListgetListByXXXgetListByCostomer查询单条记录findXXXfindUserfindXXXByXXXfindUserById8. 代码组织与风格8.1 导入eayun formatter模板8.2 导入code template模板1. 修改Auth和Email2. 导入模板8.3 缩进,间隔,风格等Shift+Ctrl+F快捷键格式化代码即可。9. 注释9.1 基本原则1. 必须注释的有:a) 所有的类,标识这个类要做什么事情b) 所有的public方法,标识这个方法要完成什么业务,业务逻辑复杂的,其业务逻辑也需要在注释中体现c) 逻辑复杂的private方法,标识其业务逻辑d) 方法体中逻辑复杂的部分,标识其业务逻辑e) 所有的全局静态变量,标识静态变量的作用2. 错误的注释有:a) 注释显而易见的内容b) 注释“是什么”而不是“为什么”10. 声明1. 在导入包时当完全限制代码所使用的类的名字,而少用通配符的方式,如:import java.awt.Color;import java.awt.Button;2. 对于引入了但是没有用到的类或接口,必须从声明中移除。3. 使用Shift+Ctrl+o快捷键处理声明11. 数据库规范项目规范举例表名1.全部小写2.有固定前缀(系统级/模块级)3.只允许有一个下划线,在前缀之后4.若单词太多可以用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南阳职业学院单招职业倾向性测试题库带答案解析
- 2026年宁德职业技术学院单招职业倾向性考试必刷测试卷及答案解析(夺冠系列)
- 2026年商丘学院单招职业倾向性考试题库及答案解析(夺冠系列)
- 2026年成都工业职业技术学院单招职业倾向性考试必刷测试卷附答案解析
- 垃圾分类与环境保护
- 房屋打井协议书样本
- 房屋拆迁认购协议书
- 房屋整修施工协议书
- 房屋界线建造协议书
- 房屋置换产权协议书
- 2025年耳鼻喉医师面试题及答案
- 2025年生态环境执法大练兵比武竞赛理论考试题库(含答案)
- 家用空调维修培训
- 2025年湖南省长沙市生地会考试卷附带长郡月亮岛中学生地会考及答案
- 2025安徽合肥水务集团有限公司招聘56人笔试考试备考试题及答案解析
- 江西省稳派智慧上进2025-2026学年高二上学期11月期中语文试卷及答案
- 污水处理厂管道安装施工方案
- DGTJ08-2048-2024 民用建筑电气防火设计标准
- 2025江西抚州市5家市属国有企业招聘51人笔试考试备考试题及答案解析
- (2025年)(完整版)中药材及中药饮片培训试题附答案
- 2025年智能城市大数据中心建设方案
评论
0/150
提交评论