Java 编码规范

本文详细介绍了Java编程的工程结构规范,包括应用分层、配置文件管理、项目依赖管理和服务器环境规范。编码规范方面,涵盖了编码风格、常量定义、代码风格、OOP规范、集合相关、并发控制、控制语句以及注释规范。此外,还讨论了数据库缓存规范、安全措施、异常日志处理以及代码检查插件的使用。内容全面,旨在提升代码质量和可维护性。
摘要由CSDN通过智能技术生成

一、工程结构

1、应用分层

 

Client: 主要提供对外交互的API,各种Cmd或者Qry以及Response,并且遵循sofa的相关规范。

App层主要负责获取输入,组装context,做输入校验,发送消息给领域层做业务处理,监听确认消息,如果需要的话使用MetaQ进行消息通知;

Domain层主要是通过领域服务(Domain Service),领域对象(Domain Object)的交互,对上层提供业务逻辑的处理,然后调用下层Repository做持久化处理;

Infrastructure层主要包含Repository,Config和Common,Repository负责数据的CRUD操作,这里我们借用了盒马的数据通道(Tunnel)的概念,通过Tunnel的抽象概念来屏蔽具体的数据来源,来源可以是MySQL,NoSql,Search,甚至是HSF等;Config负责应用的配置;Common是一写工具类;负责message通信的也应该放在这一层

 

 

分层领域模型规约:

 DO(Data Object):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。

 DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。 一般来说对外提供的Command和Query都继承自DTO;

 BO(Business Object):业务对象。由 Service 层输出的封装业务逻辑的对象。

 AO(Application Object):应用对象。在 Web 层与 Service 层之间抽象的复用对象模型, 极为贴近展示层,复用度不高。

 VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。

 Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止 使用 Map 类来传输。

 

相应各层Java文件命名规范参见如下文件:

 

2、配置文件管理;

配置文件目录层次遵循maven的最佳实践:

代码块

Java

src
\-- main
|    \-- java
|    |-- resources
|        \-- spring  
|        |   \-- xxx-common-pigeon-client.xml
|        |   |-- xxx-common-mybatis.xml
|        |   |-- xxx-common-cache.xml
|        |   |-- xxx-pigeon-service.xml
|        |   |-- xxx-mvc-servlet.xml
|        |-- sqlmap
|        |   \-- dbName(db名称)
|        |       \-- ActivityInfoDOMapper.xml
|        |   |-- gmktacitivy
|        |-- log4j2.xml
|        |-- mybatis-generator.xml
|-- test
     \-- resources

 

3、项目依赖管理;

此处的依赖关系,主要管理提供给外部调用方的API、依赖第三方的外部API。需要说明的有以下几点

1)团队的所有maven构件的groupId定义要求以com.sankuai.web.trade(待定)为前缀,子业务通过artifactId来区分,不再在groupId后增加内容;

2) maven的version定义:{主版本号}.{次版本号}.{修订版本号}。

当增加了新的功能,或做了不兼容的改进时,一般需要更改主版本号;

当做了向下兼容的功能迭代(新增接口、类等)时,一般需要更改次版本号;

当保持API的方法签名不变,仅做了参数字段、枚举常量的增添,或者一些小的bug fix时,一般需要更改修订版本号;

说明:注意起始版本号必须为:1.0.0,而不是 0.0.1 正式发布的类库必须先去中央仓库进 行查证,使版本号有延续性,正式版本号不允许覆盖升级。如当前版本:1.3.3,那么下一个 合理的版本号:1.3.4 或 1.4.0 或 2.0.0

3) 线上应用不要依赖 SNAPSHOT 版本(安全包除外),内部的禁用,外部依赖请推动其发布正式包。

4) 在对外提供API的Jar时,建议仅包含API接口相关的声明类等,不要添加任何的第三方依赖,以防止给调用方带来一些不必要的传递依赖;对于API层的sofa依赖,请只依赖sofa-common;

5) 所有依赖的version声明应在父POM里面通过<dependencyManagement>来进行管理,而实际依赖的引入则在子POM的<dependencies>里面完成;
6) 公司基础组件请使用inf-bom,团队内部对于第三库的依赖请使用 trade-framework-bom;

 

4、服务器环境规范;

1)文献【3】详细定义了各个环境,以及北京、上海两地的环境对应关系,请参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值