美文网首页
系统重构的一点思考

系统重构的一点思考

作者: jey恒 | 来源:发表于2018-03-08 22:14 被阅读101次

    系统重构目的

    统一规范

    • 统一代码格式化,开发规范,rpc规范,日志规范,sql规范,mybatis提示插件,lombok

    合理划分架构

    • 原来架构设计不合理,层次太多,部署麻烦,容易出错
    • 前后端分离

    提高系统稳定度

    • 提高开发效率
    • 提高代码可维护性

    新技术,新方法论

    • spring boot
    • MVC
    • DDD
    • 微服务

    经验,沉淀

    • 由一个项目重构如何推广到所有的新老系统

    问题,解决

    到底如何优雅的使用spring boot?

    • 原来第一个使用springboot的项目完全照着xml配置专场beanconfig的,这种做法不提倡
    • 多用starter解决问题,能配置的用配置搞定

    怎样更好的使用mybatis生成

    • 因为我们设计都是沿用先设计数据库 [区别ddd],所以从表生成domain,mapper比较好
    • 注释混乱,命名不符合,字段映射问题,写mybaits gennertor扩展
    • 目前还有很多缺点[mapper会被覆盖,应该生成通用父类比较好,代码更加简洁]

    模块划分api, common, service; service中 web层和service层,业务逻辑要放哪里?

    • 所有的业务都写到service层,尽量减少service层次 [其实还是会产生庞大的service]
    • controller只做简单的聚合,swagger api定义 [参考DDD application类似]
    • 由于定义了一套返回的api类,那service直接返回 XxxResult ? 那service之间的调用就会很麻烦了..[怎么解决]
    • 方法内强制 使用 类似Assert 做参数验证[也使用注释] 和 条件验证 ,异常由web层统一处理

    各种业务对象如何定义

    • dto, domain, query, bo ?
    • 因为统一了 从表生成domain,mapper,xml等,所以规范了domain层只做持久化对象,不做业务逻辑,也不提倡修改
    引入springboot后,quartz,动态数据源使用比较麻烦,所以会有对quartz,动态数据源的封装,还有excel处理等,分页等封装
    image.png
    沉淀组件之后,可以快速搭建新项目
    • 然而,还是要繁琐的建立项目,创建模块,引入自定义的包(怎么解决这个问题)
    • 创建maven脚手架

    重构改善代码

    • 多用组合, 提炼方法,拒绝大类,拒绝无数if嵌套
    • 例子: https://www.jianshu.com/p/4e23d7002cbc
    • 解决if的问题: 用注册机制处理if问题,化if为类
    • 简单的类库推荐:

    思考

    • 分析现有业务,重构代码
    • mvc 还是 ddd ?

    相关文章

      网友评论

          本文标题:系统重构的一点思考

          本文链接:https://www.haomeiwen.com/subject/jllufftx.html