您的位置:首页 > 编程语言 > Java开发

(2018)转型Java从0到1技术创业回顾系列(1)

2020-02-03 01:19 573 查看

(2018)转型Java从0到1技术创业回顾系列(1)

  • 2. Redis变量定义
  • 3. GIT提交规范
  • 4. 项目目录结构
  • 5. GITFLOW + GITLAB
  • 约定定义

    在整个开发团队从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-consumer——消费者POM
      XXX-YYY-consumer——具体消费者1
    • XXX-ZZZ-consumer——具体消费者2
  • XXX-domain——领域层POM
      XXX-domain-impl——实现层
    • XXX-domain-modeling——建模层
    • 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。
    • 点赞
    • 收藏
    • 分享
    • 文章举报
    kolema-tech 发布了1 篇原创文章 · 获赞 0 · 访问量 61 私信 关注
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: