情景:新公司入职以后,查看原来的代码,发现代码结构混乱,而且其中夹杂着很多无用的代码,并且代码分层也不够清晰,导致熟悉起来比较困难,而且对于后续的功能迭代和新需求的添加都比较困难(无法忍受,可能对代码有洁癖,无用的代码就想去掉),想在原来的基础上改,但是对原有代码又不够熟悉,导致不敢轻举妄动,跟同事沟通了解了大概,项目基本是从github上clone下来的,所以感觉他也不是很清楚,但是大概功能很简单,就是基本的增删改差,并且没有用户什么的相关东西,由此打算自己重新搭建框架。
1.首先解决pom依赖问题
原有项目直接使用aliyun的镜像,没有自己的私服,我考虑到之后可能会有自己的jar所以先搭建nexus;
没动手就遇到了问题,公司比较传统之前用的一直都是windos server,而我对windos server不熟悉,当然windos server也可以搭建,但是相关文档而且将服务做成后台服务都比较困难,所以我放弃在windos server上搭建,直接在本机电脑上装了一个linux虚拟机,然后在里面安装了nexus;
2.将原来的mysql服务从windos server转移到linux虚拟机中
3.搭建源码存储服务gitblit,因为之前同事的项目代码是直接存放在github上,没有自己的源码托管服务,所以我这里要重新搭建,刚开始想搭建gitlab,但是感觉gitlab太大,功能虽然很全,但是我的虚拟机可能性能不够,所以找了gitblit代替;
4.开始初始化git项目,并且进行模块化设计,接下里说一下我的想法;
platform ----父级pom
entity ----数据实体
common ----共用代码,例如异常封装,枚举等
dao ----简单数据库查询
service -----这里独立出来service,是为to于dto的转换,防止dto直接暴露到web
web -----web对外层,controller等
util -----工具类模块
对于独立service模块是否需要存在我思考了很久,而且也是从刚入行以来一直没有明白的;
不需要的原因:
第一点:service模块就是业务逻辑处理模块,那么独立出来好像并没有必要,因为每一个业务的处理肯定不一样;
第二点:如果独立出来了,那么这个模块的代码基本上不可能重用的,而且又多了一层;
第三点:如果这里独立出来了,那么web那边还是否需要有自己的service;
需要的原因:
第一点:能够封装to与dto的转换,防止dto直接暴露到web这边;
第二点:独立出来,可以体现自己的设计思想,实际使用上无法看出来,因为我尝试着在web模块里去掉entity的依赖,发现项目无法启动,所以只能在使用的时候注意,千万不要乱用;
第三点:这样独立出来有利于其他项目的共用,并且每层都分的很清楚,有利于理解;
当然最终是否需要这个独立service模块还是取决于自己,我个人倾向于分出来,有利于代码阅读者更加容易阅读,代码也更加清晰,其余模块的如此拆分,有利于之后迭代更快,新需求添加更简单,代码结构也很清晰,当然最后交接的时候也能少挖一些坑让后来人填;
网友评论