系统重构的一点思考

系统重构目的

统一规范

  • 统一代码格式化,开发规范,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 ?
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,494评论 11 349
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,099评论 25 709
  • 谈钱不伤感情,谈感情也不伤钱,觉得伤那只是将你的钱和感情看的太重了,你的感情不值钱,你的钱通货膨胀后也会贬值...
    熊猫续梦阅读 1,859评论 0 0
  • 年龄大了还单身,就好像犯了引起天下共愤错事,父母的态度由唠叨变成了苛责,外人的非议更是一山更比一山高。 其实你没有...
    会红的眼阅读 4,960评论 7 20
  • 为何你总想自控,却总是自控不了。 总是订立一些自律目标,却总是被欲望打败。 为何自律这么难? 很多人都非常困惑,总...
    猫黍阅读 4,206评论 1 4

友情链接更多精彩内容