搞了这么久,我觉得有必要对我的项目重构一下。已经学了那么多,再加上我写的代码那么烂,重构肯定是很容易上手。
本文没什么干货,纯属自己的一点记录。
项目介绍
其实项目代码有点乱,这是一个写入数据到 cassandra 的项目(实际上是写入到JanusGraph)。
我们有两套集群,数据写到 cassandra 要知道写到哪个集群。这是需要配置的,然后我们的导入数据分为全量导入和增量导入,这也是需要配置。
上面两个配置确定后,其他导数据相关配置直接放在 cassandra 中存储,比如导入到哪个 keyspace,这也是为了方便管理。
然后是导数据的代码,先不重构,但是导数据的时候可能有个建schema 操作,也需要查询 cassandra配置。
简单重构
之前的代码将这两部分直接放在一个类中。首先我要做的就是讲这部分代码拆分,首先拆分两个类分别放这两中配置,第一个是 JobConfig,第二个是 ImportConfig。 定义 JobConfig 接口,里面添加获取对应配置的方法。然后实现一个默认的 JobConfig 类,返回默认值。然后再定义一个配置文件类,ConfigFileJobConfig,根据配置文件发返回,顺便代理一下默认的 JobConfig。 然后是 ImportConfig ,里面有一个JobConfig 的对象。然后就可以吧方法都搬过来,引用也搬过来,替换掉即可。
重构遇到的问题
首先我的项目是多模块项目,我将重构后的类放在另一个模块中,导致出现了依赖问题。这个是书中没写的。
然后还有引用的替换问题,我的这个类的作用太多。导致很多方法相互调用,很难处理。
再就是静态和非静态变量处理的问题。以前的配置都是通过静态变量的方式,现在换成两个配置以后,很多地方都是直接new,这样导致出现了非单例模式。之前的配置不知道静态还是非静态了。
最后是自己心急,总是一下子跳很大一步,最后发现不行,又回退。忙活了一整天,最后发现又退回来了,以后重构应该一步一步来。
单元测试需要跟上。没跟上居然发生了一个 StackOverFlow。