(2018)转型Java从0到1技术创业回顾系列(1)
2020-02-03 01:19
573 查看
(2018)转型Java从0到1技术创业回顾系列(1)
约定定义
在整个开发团队从0到1的过程中,我们也积累了很多刚需的问题。这以后也是我们的不断升华的基石。
1. Header Code定义
规则:2位大系统 + 2位子系统 + 4位业务代码
Eg:
# 20——支付系统,01——控制服务,0001——支付单不存在 20010001 # 20——支付系统,02——订单服务,0002——验证不通过 20020002
与多语言集成最佳实践
首先看看响应结构:
{ "data": { //response's data }, "header": { "code": "string", "message": "string" } }
字段说明:
- header:响应头部
- header.code:服务端响应的代码
- header.message:消息
- data:数据体
其次,资源文件定义:
messages_en_CN.properties
20011007=取消订单:{0}失败. {1} 20011008=请登陆 20011009=会员不匹配 20011010=订单已过期
messages_en_US.properties
20011007=Cancel order:{0} failed. {1} 20011008=You need login. 20011009=Your member does not match. 20011010=The order has expired.
再定义Code对应的异常,绑定到Code
public class CancelOrderException extends SigmaException { public CancelOrderException() { } public CancelOrderException(String message) { super(message); } public CancelOrderException(String message, Throwable cause) { super(message, cause); } public CancelOrderException(Throwable cause) { super(cause); } public CancelOrderException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } @Override public String getErrorCode() { //public static final String CANCEL_ORDER_FAILED = "20011007"; return ResponseCodes.CANCEL_ORDER_FAILED; } }
最后,抛出异常:
throw new CancelOrderException().withArguments(orderId, getOrderStatus);
2. Redis变量定义
系统简写 | 分割符 | 中缀 | 后缀 |
---|---|---|---|
{source | projectCode} | 分号 | {orderId}:不同的流程后缀 | 香蕉:{orderId} |
Eg:
- trp:12345:lsf
- trp:12345:prc
- trp:12345:booking
- kount:order:1234
- kount:order:1245
- paypal:expiry:123
- paypal:expiry:124
3. GIT提交规范
格式:
类别#ID 分支 操作 desc:描述
- 类别:task,story,bug, issues。task:指禅道的任务,story:禅道的需求,bug:禅道的bug ,issues:指gitlab的Issues 。
- ID对应禅道或者Gitlab的ID
- 分支:具体的分支,eg: feature-1.0 或者release-1.0
- 操作:[DEV] [BUG] [REF] 。DEV对应功能开发,BUG对应BUG修复,REF对应重构。
- 描述:突出代码的修改
GITLAB示例:
4. 项目目录结构
优先采用多模块结构
XXX项目层次结构示例:
- XXX——根pom XXX-ms——微服务,提供web API调用
- XXX-dashboard——站点,提供后台维护
- XXX-rest——提供Online API,对外,对移动端。
- XXX-contract——契约,提供Feign调用接口,定义rest或者ms的接口。
- XXX-common——公共工具
- XXX-task——任务POM XXX-YYY-task——具体任务1
- XXX-ZZZ-task——具体任务2
-
XXX-YYY-consumer——具体消费者1
-
XXX-domain-impl——实现层
- XXX是项目名
- YYY是子模块名
- 其他的酌情命名
5. GITFLOW + GITLAB
最佳实践:
- Issue + feature’s branch实现功能的不断增强;
在开发Sigma框架的过程中用得比较多。 - Protect Branches:master、release-*、feature-*、hotfix
多人协作得时候,广泛使用。 - Set default branch
方便切分支。 - Set Member Access,限制非管理角色,不能合并到受保护的分支
让Code Review有专门的人做。 - 及时Rebase
保证最小的冲突解决 - 提交之前要合并,本地解决冲突,比如,将feature-1.0合并到feature-1.0#task1234
自治合并 - 一个任务或一个BUG或一个ISSUE,对应一个分支
- 同一个分支可以发起多次合并请求。
- 在可估计的提交次数以内,优先使用rebase。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 2018最新 JAVA架构师系列课程分布式缓存技术Redis权威指南
- Java开发技术十年的回顾与展望
- Java开发技术十年的回顾与展望(收藏)
- Java 加解密技术系列之 SHA
- Java技术本纪(系列专题--J2SE发展演变史)
- Java技术回顾之JMS:JMS概念和模型
- Java 加解密技术系列之 BASE64
- 【Java安全技术探索之路系列:Java可扩展安全架构】之三:JCA(二):JCA类和接口
- 2006年Java开发技术回顾与展望
- 从Java到Ruby——我的最近一次技术转型
- Java开发技术十年的回顾与展望
- 【JavaSE入门系列】第01章_Java技术入门
- Java 加解密技术系列之 DES
- 【Java 安全技术探索之路系列:J2SE安全架构】之六:安全管理工具
- 【Java安全技术探索之路系列:Java可扩展安全架构】之五:JCE(一):JCE架构介绍
- [技术回顾系列]--总目录
- [技术回顾系列]--垃圾收集机制
- Java开发技术十年的回顾与展望
- Java技术回顾之JDBC:连接池
- 2007 Java技术回顾与展望